Я использую WMI для мониторинга хостов Windows Server 2003 и Windows Server 2008. Я получил всю необходимую информацию, кроме производительности дискового ввода-вывода.
Я пробовал запросить «Win32_PerfFormattedData_PerfDisk_LogicalDisk» для «AvgDiskQueueLength», но всегда получаю результат «без ключа».
Служба WMI работает в обеих системах, и я могу без ошибок подключиться к ней с помощью wbemtest.
Я что-то пропустил или что-то делаю не так?
AvgDiskQueueLength - это свойство класса Win32_PerfFormattedData_PerfDisk_LogicalDisk. Если результат «без ключа» не является чем-то действительно странным, похоже, что вы пытаетесь получить к нему доступ неправильно. Это должно быть простое обозначение свойств, например
win32perf.AvgDiskQueueLength
Следующий код должен работать.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colDisks = objRefresher.AddEnum _
(objWMIService, "win32_perfformatteddata_perfdisk_physicaldisk"). _
objectSet
objRefresher.Refresh
For Each objDisk in colDisks
Wscript.Echo "Average Disk Queue Length: " & vbTab & _
objDisk.AvgDiskQueueLength
Next
Часть освежения действительно нужна, только если вы собираетесь сделать несколько звонков. Избегает необходимости выполнять код GetObject снова и снова.
Тем не менее, вы можете захотеть немного изучить среднюю длину дисковой очереди. Я помню, что было что-то необычное в том, как это собирают или сообщают. Возможно, я ошибаюсь, но подумал, что упомяну об этом.