Performance-Monitoring

通過 wmi 監控磁碟 i/o

  • March 9, 2016

我正在使用 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 程式碼。

不過,您可能想稍微研究一下平均磁碟隊列長度。我記得它的收集或報告方式有些奇怪。我可能是錯的,但我想我會提到它。

引用自:https://serverfault.com/questions/328594