Measure-Object -sum来自连续get-counter的所有counterSamples

时间:2012-08-11 00:59:48

标签: powershell powershell-v2.0 performancecounter powershell-v1.0

我正在尝试编写一个PowerShell脚本,它将每N秒连续轮询一次性能计数器,然后对计数器返回的值求和。 我的最终目标是将十几个计数器的结果汇总并运送到Graphite服务器进行监控和报告。

到目前为止,这是我为一个特定的计数器拼凑而成的,我不知道如何在PowerShell魔法伏都教中获得一些东西。

  1. 我无法弄清楚如何将Job ID作为整数获取,这样我就可以自动化while循环。
  2. 仅从Receive-Job返回CounterSample数据,可以通过管道传递给Measure-Object获得总和。

    Start-Job {Get-Counter -Counter "\Network Interface(MyNic)\Bytes Received/sec" -Continuous -SampleRate 1}
    
    while ($true) { 
            start-sleep -s 10
            Receive-Job -id N
    }
    
  3. 我还想知道在PowerShell v1.0或v2.0中动态确定Windows框中活动NIC的简单有效方法。 " \网络接口(*)\"有效,但给了我一切。

1 个答案:

答案 0 :(得分:1)

关于#1,抓住从Start-Job返回的InstanceId。您可以稍后使用它来引用作业,例如:

$job = Start-Job ...

对于#2,最后添加一个额外的foreach,例如:

$job = start-job {Get-Counter -Counter "\Network Interface(Realtek PCIe GBE Family Controller)\Bytes Total/sec" -Continuous -SampleInterval 1 | Foreach {$_.CounterSamples}}

然后对数据进行求和:

Receive-Job $job | Measure CookedValue -Sum