通过wmi监视磁盘I / O

我正在使用WMI来监视Windows Server 2003和Windows Server 2008主机。 我得到了所有我想要的信息,但磁盘I / O性能。

我试过为“AvgDiskQueueLength”查询“Win32_PerfFormattedData_PerfDisk_LogicalDisk”,但我总是得到“没有密钥”的结果。

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代码。

你可能想研究一下平均磁盘队列长度。 我记得那里收集或报道的方式有点儿怪异。 我可能是错的,但是我想我会提到它。