簡體   English   中英

使用 WMI 監控遠程機器上的帶寬

[英]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 部分。

Windows 2000 上的派生統計信息

這里有一篇很棒的文章Make your own Formatted Performance Data Provider

如果您想深入研究在更長的采樣間隔內收集更多統計信息

約翰

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM