Тема: VBScript: логические диски и физические накопители
Задача: без использования оснастки "Управление дисками" сопоставить имена логических дисков заданной станции домена с моделями накопителей, на которых эти диски расположены.
Пример сценария для её решения:
Dim objWMI, objLogicalDisks, objLD
Dim objPartitions, objPart, objDrives, objDrive, objFS
Dim strComputer, strTranslator, strList, strTemp, blnIsConsole
strComputer = "имя компьютера": strList = vbNullString
Set objFS = CreateObject("Scripting.FileSystemObject")
strTranslator = objFS.GetBaseName(WScript.FullName)
Set objFS = Nothing
If StrComp(strTranslator, "cscript", vbTextCompare) = 0 Then
blnIsConsole = True
Else
blnIsConsole = False
End If
Set objWMI = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & strComputer & "\root\cimv2")
Set objLogicalDisks = objWMI.ExecQuery("SELECT * FROM Win32_LogicalDisk WHERE DriveType=2 OR DriveType=3")
For Each objLD In objLogicalDisks
Set objPartitions = objWMI.ExecQuery("ASSOCIATORS OF {Win32_LogicalDisk.DeviceID=""" & _
objLD.DeviceID & _
"""} WHERE AssocClass=Win32_LogicalDiskToPartition")
For Each objPart In objPartitions
Set objDrives = objWMI.ExecQuery("ASSOCIATORS OF {Win32_DiskPartition.DeviceID=""" & _
objPart.DeviceID & _
"""} WHERE AssocClass=Win32_DiskDriveToDiskPartition")
For Each objDrive In objDrives
strTemp = objLD.DeviceID & " => " & objDrive.Caption & _
" (Диск " & objDrive.Index & ")"
strList = strList & strTemp & vbNewLine
If blnIsConsole Then WScript.Echo strTemp
Next
Set objDrive = Nothing
Set objDrives = Nothing
Next
Set objPart = Nothing
Set objPartitions = Nothing
Next
Set objLD = Nothing
Set objLogicalDisks = Nothing
Set objWMI = Nothing
If Len(strList) = 0 Then
WScript.Echo "Накопителей указанного типа не обнаружено."
End If
If Not blnIsConsole Then WScript.Echo strList
WScript.Quit 0
Примечания.
1. Пример предназначен для работы с накопителями трёх типов: HDD, USB-Flash, ZIP.
2. Работоспособность проверялась на Windows 2000 Pro/XP Pro/2003/Vista.
3. В Windows Vista наблюдались случаи неверного определения некоторых моделей накопителей типа USB-Flash.