Задачи WMI для дисков и файловых систем получают сведения о состоянии оборудования диска и логических томах. Другие примеры см. в разделе TechNet ScriptCenter по адресу https://www.microsoft.com/technet.
Примеры скриптов, показанные в этом разделе, получают данные только с локального компьютера. Дополнительные сведения об использовании скрипта для получения данных с удаленных компьютеров см. в разделе Подключение для WMI на удаленном компьютере.
В следующей процедуре описывается запуск скрипта.
Выполнение скрипта
Скопируйте код и сохраните его в файле с расширением VBS, например filename.vbs. Убедитесь, что текстовый редактор не добавляет расширение TXT в файл.
Откройте окно командной строки и перейдите в каталог, в котором сохранен файл.
В командной строке введите cscript filename.vbs .
Если вы не можете получить доступ к журналу событий, проверка, чтобы узнать, работаете ли вы в командной строке с повышенными привилегиями. Некоторые журналы событий, такие как журнал событий безопасности, могут быть защищены пользователем контроль доступа (UAC).
Примечание.
По умолчанию cscript отображает выходные данные скрипта в окне командной строки. Так как скрипты WMI могут создавать большие объемы выходных данных, может потребоваться перенаправить выходные данные в файл. Введите cscript filename.vbs > outfile.txt в командной строке, чтобы перенаправить выходные данные скрипта filename.vbs в outfile.txt.
В следующей таблице перечислены примеры скриптов, которые можно использовать для получения различных типов данных с локального компьютера.
Часто выполняемые действия в новом интерфейсе
Классы или методы WMI
... Узнайте, сколько дискового пространства каждый пользователь использует на компьютере?
Если вы используете квоты на диск, используйте класс Win32_DiskQuota и извлеките значения свойств User и DiskSpaceUsed .
VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colQuotas = objWMIService.ExecQuery ("Select * from Win32_DiskQuota")
For each objQuota in colQuotas
Wscript.Echo "Volume: "& vbTab & objQuota.QuotaVolume
Wscript.Echo "User: "& vbTab & objQuota.User
Wscript.Echo "Disk Space Used: " & vbTab & objQuota.DiskSpaceUsed
Next
strComputer = "." Set objWMIService = GetObject( "winmgmts:\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery ("Select * From Win32_LogicalDisk Where DeviceID = "A:'")
For Each objItem in colItems
intFreeSpace = objItem.FreeSpace
If IsNull(intFreeSpace) Then
Wscript.Echo "There is no disk in the floppy drive."
Else
Wscript.Echo "There is a disk in the floppy drive."
End If
Next
foreach ($objItem in $colItems)
{
$intFreeSpace = $objItem.FreeSpace
if ($intFreeSpace -eq $null) { "There is no disk in the floppy drive." }
else { "There is a disk in the floppy drive." }
}
... различает фиксированный жесткий диск и съемный жесткий диск?
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery _
("Select * from Win32_LogicalDisk")
For Each objDisk in colDisks
Wscript.Echo "DeviceID: "& vbTab _
& objDisk.DeviceID
Select Case objDisk.DriveType
Case 1
Wscript.Echo "No root directory. " & "Drive type could not be " & "determined."
Case 2
Wscript.Echo "DriveType: "& vbTab & "Removable drive."
Case 3
Wscript.Echo "DriveType: "& vbTab & "Local hard disk."
Case 4
Wscript.Echo "DriveType: "& vbTab & "Network disk."
Case 5
Wscript.Echo "DriveType: "& vbTab & "Compact disk."
Case 6
Wscript.Echo "DriveType: "& vbTab & "RAM disk."
Case Else
Wscript.Echo "Drive type could not be" & " determined."
End Select
Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery ("Select * from Win32_LogicalDisk")
For Each objDisk in colDisks
Wscript.Echo "DeviceID: " & objDisk.DeviceID
Wscript.Echo "Free Disk Space: " & objDisk.FreeSpace
Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colVolumes = objWMIService.ExecQuery ("Select * from Win32_Volume Where Name = 'K:\\'")
For Each objVolume in colVolumes
errResult = objVolume.Defrag()
Next
... определите, какая буква диска связана с секцией логического диска?
ComputerName = "." Set wmiServices = GetObject ( _ "winmgmts:{impersonationLevel=Impersonate}!/" & ComputerName) ' Get physical disk Drive Set wmiDiskDrives = wmiServices.ExecQuery ("SELECT Caption, DeviceID FROM Win32_DiskDrive")
Для каждого wmiDiskDrive In wmiDiskDrives WScript.Echo "Заголовок диска: " & wmiDiskDrive.Caption & VbNewLine & "DeviceID: " и " (" и wmiDiskDrive.DeviceID и ")"
Используйте идентификатор устройства диска для поиска связанного запроса секции = "ASSOCIATOR OF {Win32_DiskDrive.DeviceID='" _ & wmiDiskDrive.DeviceID & "}WHERE AssocClass = Win32_DiskDriveToDiskPartition".
Set wmiDiskPartitions = wmiServices.ExecQuery(query)
Для каждого wmiDiskPartition In wmiDiskPartitions 'Use partition device id to find logic disk Set wmiLogicalDisks = wmiServices.ExecQuery _ ("ASSOCIATOR OF {Win32_DiskPartition.DeviceID='" _ & wmiDiskPartition.DeviceID & "'} WHERE AssocClass = Win32_LogicalDiskToPartition")
For Each wmiLogicalDisk In wmiLogicalDisks
WScript.Echo "Drive letter associated" _
& " with disk drive = " _
& wmiDiskDrive.Caption _
& wmiDiskDrive.DeviceID _
& VbNewLine & " Partition = " _
& wmiDiskPartition.DeviceID _
& VbNewLine & " is " _
& wmiLogicalDisk.DeviceID
Next
Next
Next