Ermitteln von SAN Speicher in Windows
Hallo,
ich habe mich eben neu im Forum angemeldet und freue mich auf eine gute Zusammenarbeit.
Folgendes Problem lässt mir keine Ruhe mehr. Ich soll via Skript SAN Speicher (von IBM) auf Windows Servern ermitteln. Ausgabe soll in etwa so aussehen:
"Laufwerk f: san Speicher"
"Laufwerk g: kein san Speicher"
Zusätzlich soll bei Sanspeicher noch die Größe und der noch verfügbare Speicher angezeigt werden.
Wollte dies zuerst mit VBScript und WMI lösen. Hier ein Auszug aus meinen Skript:
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_LogicalDisk", "WQL")
For Each objItem In colItems
If objitem.DriveType=5 then
else
file.Write (hostname & ";" & timestamp & ";")
file.Write (objItem.Name & ";")
file.Write (Int(objItem.Size/1024^2) & ";")
file.Write (Int(objItem.FreeSpace/1024^2) & ";")
Set colItems2 = objWMIService.ExecQuery("SELECT * FROM Win32_SCSIControllerDevice", "WQL")
For Each objItem2 In colItems2
objitem2.dependent = sanstring
If instr(sanstring) = "1742" OR "1815" OR "2105" OR "2107" OR "4700" then
file.write (sanstring) &vbcrlf
end if
Next
end if
next
Kurze Erklärung:
Am Anfang scannt er jeden Laufwerksbuchstaben und sieht nach ob es eine Festplatte ist.
Danach gibt er den Laufwerksbuchstaben, größe und freien Speicher aus.
Danach sollte er eigentlich genau von diesem Laufwerksbuchstaben die "dependent" vom SCSI controller ausgeben. Somit wollte ich dann in dem String nachsehen, ob einer der oben aufgeführten Zahlen im String sind, da es bei uns ein Teil der SAN-Bezeichnung ist (IBM SAN). Nur leider gibt er so unter jeden Laufwerksbuchstaben jeden SCSI Controller aus.
Jemand eine Idee? Oder gibt es einfachere Wege SAN-Speicher auszulesen?
Ich hoffe ihr konntet mir folgen ;)
MfG
Marcel
ich habe mich eben neu im Forum angemeldet und freue mich auf eine gute Zusammenarbeit.
Folgendes Problem lässt mir keine Ruhe mehr. Ich soll via Skript SAN Speicher (von IBM) auf Windows Servern ermitteln. Ausgabe soll in etwa so aussehen:
"Laufwerk f: san Speicher"
"Laufwerk g: kein san Speicher"
Zusätzlich soll bei Sanspeicher noch die Größe und der noch verfügbare Speicher angezeigt werden.
Wollte dies zuerst mit VBScript und WMI lösen. Hier ein Auszug aus meinen Skript:
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_LogicalDisk", "WQL")
For Each objItem In colItems
If objitem.DriveType=5 then
else
file.Write (hostname & ";" & timestamp & ";")
file.Write (objItem.Name & ";")
file.Write (Int(objItem.Size/1024^2) & ";")
file.Write (Int(objItem.FreeSpace/1024^2) & ";")
Set colItems2 = objWMIService.ExecQuery("SELECT * FROM Win32_SCSIControllerDevice", "WQL")
For Each objItem2 In colItems2
objitem2.dependent = sanstring
If instr(sanstring) = "1742" OR "1815" OR "2105" OR "2107" OR "4700" then
file.write (sanstring) &vbcrlf
end if
Next
end if
next
Kurze Erklärung:
Am Anfang scannt er jeden Laufwerksbuchstaben und sieht nach ob es eine Festplatte ist.
Danach gibt er den Laufwerksbuchstaben, größe und freien Speicher aus.
Danach sollte er eigentlich genau von diesem Laufwerksbuchstaben die "dependent" vom SCSI controller ausgeben. Somit wollte ich dann in dem String nachsehen, ob einer der oben aufgeführten Zahlen im String sind, da es bei uns ein Teil der SAN-Bezeichnung ist (IBM SAN). Nur leider gibt er so unter jeden Laufwerksbuchstaben jeden SCSI Controller aus.
Jemand eine Idee? Oder gibt es einfachere Wege SAN-Speicher auszulesen?
Ich hoffe ihr konntet mir folgen ;)
MfG
Marcel
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 111661
Url: https://administrator.de/forum/ermitteln-von-san-speicher-in-windows-111661.html
Ausgedruckt am: 15.05.2025 um 04:05 Uhr
7 Kommentare
Neuester Kommentar
Ich würde auf WIN32_DiskDrive gehen, um das zu ermitteln.
Unter der Property Model melden sich bei uns die NetApp Luns mit "NETAPP LUN Multi-Path Disk Device", da müsste man halt bei Dir schauen wie sich die IBM da meldet.
Unter dem Property Name kommt \\.\PHYSICALDRIVEx was man über Win32_DiskDrivetoDiskPartition und Win32_LogicalDisktoPartition einem Laufwerksbuchstaben zuordnen kann.
Unter der Property Model melden sich bei uns die NetApp Luns mit "NETAPP LUN Multi-Path Disk Device", da müsste man halt bei Dir schauen wie sich die IBM da meldet.
Unter dem Property Name kommt \\.\PHYSICALDRIVEx was man über Win32_DiskDrivetoDiskPartition und Win32_LogicalDisktoPartition einem Laufwerksbuchstaben zuordnen kann.
Von der Seite wirds aufwendig, geht aber auch.
Aus dem Win32_SCSIControllerDevice bekommt man die PNPDeviceID (bei mir muß ich die MPIO Version nehmen, da sich die Fail Over Software noch einklinkt):
Bsp: MPIO\\DISK&VEN_NETAPP&PROD_LUN&REV_0.2_\\1&7F6AC24&0&486E5761676F47734A4D6A59
Die findet sich unter Win32_DiskDrive wieder. Wenn ich das Objekt habe, bekomme ich über das Attribut Name folgendes: \\.\PHYSICALDRIVE8
Das findet sich wieder unter Win32_DiskDriveToPartition unter Antecedent. Unter Dependent findet sich dann: Disk #8, Partition
Dieses finde ich wieder unter Win32_LogicalDiskToPartition als Antecedent und unter Dependent finde ich meinen Laufwerksbuchstaben: Dependent: \\WN07\root\cimv2:Win32_LogicalDisk.DeviceID="H:"
Das zu Codieren habe ich jetzt aber gerade keine Lust, aber mit genügend Abfragen sollte man da durchkommen.
Aus dem Win32_SCSIControllerDevice bekommt man die PNPDeviceID (bei mir muß ich die MPIO Version nehmen, da sich die Fail Over Software noch einklinkt):
Bsp: MPIO\\DISK&VEN_NETAPP&PROD_LUN&REV_0.2_\\1&7F6AC24&0&486E5761676F47734A4D6A59
Die findet sich unter Win32_DiskDrive wieder. Wenn ich das Objekt habe, bekomme ich über das Attribut Name folgendes: \\.\PHYSICALDRIVE8
Das findet sich wieder unter Win32_DiskDriveToPartition unter Antecedent. Unter Dependent findet sich dann: Disk #8, Partition
Dieses finde ich wieder unter Win32_LogicalDiskToPartition als Antecedent und unter Dependent finde ich meinen Laufwerksbuchstaben: Dependent: \\WN07\root\cimv2:Win32_LogicalDisk.DeviceID="H:"
Das zu Codieren habe ich jetzt aber gerade keine Lust, aber mit genügend Abfragen sollte man da durchkommen.