Назад | Перейти на главную страницу

мониторинг дискового ввода-вывода через wmi

Я использую 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 снова и снова.

Тем не менее, вы можете захотеть немного изучить среднюю длину дисковой очереди. Я помню, что было что-то необычное в том, как это собирают или сообщают. Возможно, я ошибаюсь, но подумал, что упомяну об этом.