Hi,
Warum denn Seriennummern vergleichen, WMI bietet doch eine Funktion dafür..
Das Skript habe ich unter WinXP geschrieben und dort liefert es korrekt die die Partitionierung der lokalen Platten.
Es läuft auch unter meinem Win10pro-x64..
..leider habe ich hier keine weiteren Partitionen eingerichtet ;-))
LG ytwinky
Spoiler anzeigen
AutoIt
#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=D:\Usr\Partitionierung.Exe
#AutoIt3Wrapper_UseUpx=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
; Erstellt von AutoIt Scriptomatic, überarbeitet von ytwinky, MD
Const $MaxLw=26, $wbemFlagReturnImmediately=0x10, $wbemFlagForwardOnly=0x20, $wbemFlags=0x10+0x20
Local $Lw[$MaxLw], $vorhanden=-1, $j, $strComputer=@Computername, $AllDrives, $WMISvc, $s='', $EachDrive, $Platten='Platte'
$WMISvc=ObjGet('winmgmts:\\' &$strComputer &'\root\cimv2')
$AllDrives=$WMISvc.ExecQuery('Select Name From Win32_PerfFormattedData_PerfDisk_PhysicalDisk', 'wql', $wbemFlags)
If IsObj($AllDrives) Then
For $EachDrive In $AllDrives
If StringInstr($EachDrive.Name, ':')=0 Then ContinueLoop
$vorhanden+=1
$Lw[$vorhanden]=$EachDrive.Name
Next
EndIf
$Platten &=($vorhanden+1)<>1 ? 'n' : ''
$s=StringFormat('Vorhanden sind %i %s:\nPlatte-Nr\tPartition(en)', $vorhanden+1, $Platten)
For $j=0 To $vorhanden
$s&=@Cr &' ' &_BubbleSort($Lw[$j])
Next
Msgbox(0, 'Partitionierung am ' &$strComputer, $s)
Func _BubbleSort($StringWithColon)
Local $i, $j, $y='', $Feld=StringSplit($StringWithColon, ':'), $s=' ' &StringLeft($Feld[1], 1) &@Tab
$Feld[1]=StringRight($Feld[1], 2)
For $i=1 To $Feld[0]-1
For $j=1 To $Feld[0]-1
If $Feld[$i]<$Feld[$j] Then
$y=$Feld[$i]
$Feld[$i]=$Feld[$j]
$Feld[$j]=$y
EndIf
Next
Next
For $i=1 To $Feld[0]-1
$s&=$Feld[$i] &': '
Next
Return $s &@Lf
EndFunc
Alles anzeigen