Laufwerksbuchstaben auslesen
Laufwerksbuchstaben von lokalen Partitionen auslesen und in eine Textdatei übergeben
Hallo Zusammen,
ich muss mir gerade den Kopf über folgendes Problem zerbrechen.
Ich suche nach einer Möglichkeit die Laufwerksbuchstaben von lokalen Partitionen (keine Netzlaufwerke o.ä.) auszulesen und diese in eine Textdatei zu übergeben. Ich hab schon im Internet gesucht und bin dabei auf unten angehängtes Script gestoßen. Das Script funktioniert unter XP so wie es soll, doch unter Vista oder Server 2008 als Beispiel, wird keine Ausgabe generiert. Ich habs mit meinen primitiven Programmierkenntnissen gerade so hinbekommen die Ausgabe in eine Textdatei zu schicken, allerdings weiß ich nicht wo das Problem unter Vista sein könnte.
Vielen Dank schonmal im Voraus
Hallo Zusammen,
ich muss mir gerade den Kopf über folgendes Problem zerbrechen.
Ich suche nach einer Möglichkeit die Laufwerksbuchstaben von lokalen Partitionen (keine Netzlaufwerke o.ä.) auszulesen und diese in eine Textdatei zu übergeben. Ich hab schon im Internet gesucht und bin dabei auf unten angehängtes Script gestoßen. Das Script funktioniert unter XP so wie es soll, doch unter Vista oder Server 2008 als Beispiel, wird keine Ausgabe generiert. Ich habs mit meinen primitiven Programmierkenntnissen gerade so hinbekommen die Ausgabe in eine Textdatei zu schicken, allerdings weiß ich nicht wo das Problem unter Vista sein könnte.
Vielen Dank schonmal im Voraus
Option Explicit
Dim oWMI
Dim fso
Dim oLog
Set oWMI = GetObject ("winmgmts:")
Call ScanHardDisks
Sub ScanHardDisks
Dim oDisk
Dim sTxt
For Each oDisk In oWMI.InstancesOf("Win32_DiskDrive")
If IsHardDisk(oDisk) Then
Dim oParts
Dim oPart
sTxt = sTxt & "Festplatte #" & oDisk.Index
Set oParts = GetDiskParts(oDisk)
For Each oPart In oParts
sTxt = sTxt & GetDriveLetters (oPart)
Next
sTxt = sTxt & vbCrlf
End If
Next
WSH.Echo sTxt
set fso = CreateObject("Scripting.FileSystemObject")
set oLog = fso.CreateTextFile("hdd.txt",true)
oLog.Write sTxt
oLog.close
End Sub
Function IsHardDisk (oDisk)
IsHardDisk = False
If Not IsNull(oDisk.MediaType) Then
IsHardDisk = StrComp (oDisk.MediaType, _
"Fixed" & vbTab & "hard disk media") = 0
End If
End Function
Function GetDiskParts (oDisk)
Set GetDiskParts = oWMI.ExecQuery ("ASSOCIATORS OF " _
& "{Win32_DiskDrive.DeviceID='" & oDisk.DeviceID _
& "'} WHERE AssocClass = Win32_DiskDriveToDiskPartition")
End Function
Function GetLogicalDisks (oPart)
Set GetLogicalDisks = oWMI.ExecQuery ("ASSOCIATORS OF " _
& "{Win32_DiskPartition.DeviceID='" & oPart.DeviceID _
& "'} WHERE AssocClass=Win32_LogicalDiskToPartition")
End Function
Function GetDriveLetters (oPart)
Dim oLogics
Dim oLogic
Set oLogics = GetLogicalDisks(oPart)
For Each oLogic In oLogics
GetDriveLetters = GetDriveLetters & " " & oLogic.DeviceID
Next
End Function
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 115426
Url: https://administrator.de/contentid/115426
Ausgedruckt am: 26.11.2024 um 18:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo,
im Code werden wohl einige Abkürzungen benutzt, die so in Vista /windows 7 nicht mehr funktionieren.
Mit zusätzlichen Object Variablen ist das wahrscheinlich hinzubekommen, interessiert mich - ich nehme es mal auf meine Liste.
Gruß
LotPings
im Code werden wohl einige Abkürzungen benutzt, die so in Vista /windows 7 nicht mehr funktionieren.
oWMI.InstancesOf("Win32_DiskDrive")
Mit zusätzlichen Object Variablen ist das wahrscheinlich hinzubekommen, interessiert mich - ich nehme es mal auf meine Liste.
Gruß
LotPings
Set fso = CreateObject("Scripting.FilesystemObject")
Set f = fso.CreateTextFile("D:\beispiel.txt", 8, True)
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk",,48)
dim counter
counter = 1
For Each objItem in colItems
If LCase(objITem.description) = "lokale festplatte" Then
WScript.Echo objItem.Name
'oder in txt file
f.writeline "Laufwerkbuchstabe " & counter & ": " & objItem.Name
counter = counter +1
End If
Next
So liest du die Laufwerksbuchstaben aus.
Habs auf XP und auf Server2008 getestet und klappt.
(sollte daher auch auf Vista laufen)
Ich hoffe das ist das was du suchst.
Gruss Mono
Hallo andrehh,
Microsoft hat wohl in den Tiefen der WMI Texte geändert,
Bei mir unter Windows 7 lief das Script nachdem ich die Abfrage aus Zeile 50
geändert habe in
Damit der Code universell läuft müsste man die If abfrage umbauen mit RegExp oder ähnlich,
Mag ich jetzt nicht.
Gruß
LotPings
Microsoft hat wohl in den Tiefen der WMI Texte geändert,
Bei mir unter Windows 7 lief das Script nachdem ich die Abfrage aus Zeile 50
"Fixed" & vbTab & "hard disk media") = 0
"Fixed hard disk media") = 0
Damit der Code universell läuft müsste man die If abfrage umbauen mit RegExp oder ähnlich,
Mag ich jetzt nicht.
Gruß
LotPings