繁体   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