[英]Monitoring Bandwith on a remote machine with WMI
我正在嘗試監視遠程 Windows 機器上的接口帶寬。 到目前為止,我將 SNMP 與Cisco 帶寬公式一起使用,但這需要在兩個不同時間檢索兩個樣本。 最后但並非最不重要的是,我用 SNMP 記錄的值似乎是完全錯誤的。 由於我有 WMI 支持,我想使用它,但我發現的唯一值(這似乎是我正在尋找的)是Win32_PerfRawData_Tcpip_NetworkInterface 的BytesTotalPerSec 。 然而,該值看起來更像是一個總計數器(就像 SNMP 一個)。 有沒有辦法通過 WMI 檢索即時當前帶寬? 澄清當前帶寬字段總是返回 1000000000(這是最大帶寬),你可以想象它沒有幫助。
性能計數器數據在 2 個地方公開,Win32_PerfRawData* 和 Win32_PerfFormattedData*。 前者包含原始數據,后者包含派生的統計數據,這就是您所追求的。
您通常在 perfmon 中看到的(例如)是 Win32_PerfFormattedData* 數據。
試試這個 :
Set objWMI = GetObject("winmgmts://./root\cimv2")
set objRefresher = CreateObject("WbemScripting.Swbemrefresher")
Set objInterfaces = objRefresher.AddEnum(objWMI, _
"Win32_PerfFormattedData_Tcpip_NetworkInterface").ObjectSet
While (True)
objRefresher.Refresh
For each RefreshItem in objRefresher
For each objInstance in RefreshItem.ObjectSet
WScript.Echo objInstance.Name & ";" _
& objInstance.BytesReceivedPersec & ";" _
& objInstance.BytesSentPersec
Next
Next
Wscript.Echo
Wscript.Sleep 1000
Wend
根據經驗,除非您每秒都在收集指標,否則對給定秒進行測量是非常無用的。
如果您想要每分鍾的帶寬,您可以通過采集 2 個樣本從原始數據中自己獲得它(無論如何您必須在 Windows 2000 上執行此操作)
如果更有意義,請參閱此處的 Windows 2000 部分。
這里有一篇很棒的文章Make your own Formatted Performance Data Provider
如果您想深入研究在更長的采樣間隔內收集更多統計信息
約翰
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.