1

N秒ごとにパフォーマンスカウンターを継続的にポーリングし、カウンターから返された値を合計するPowerShellスクリプトを作成しようとしています。私の最終的な目標は、1ダースほどのカウンターの結果をロールアップしてGraphiteサーバーに送信し、監視とレポートを行うことです。

これまでのところ、これは私が特定のカウンターのためにまとめたものです。PowerShellの魔法のブードゥー教の土地でいくつかのものを入手する方法がわかりません。

  1. ジョブIDを整数として取得する方法がわからないため、whileループを自動化できます。
  2. 合計を取得するためにMeasure-ObjectにパイプできるReceive-JobからCounterSampleデータのみを返します。

    Start-Job {Get-Counter -Counter "\Network Interface(MyNic)\Bytes Received/sec" -Continuous -SampleRate 1}
    
    while ($true) { 
            start-sleep -s 10
            Receive-Job -id N
    }
    

また、PowerShellv1.0またはv2.0のWindowsボックスでアクティブなNICを動的に決定する簡単または効果的な方法を知りたいと思います。"\ Network Interface(*)\"は機能しますが、すべてが表示されます。

4

1 に答える 1

1

#1 については、 から返された InstanceId を取得しStart-Jobます。後でジョブを参照するためにそれを使用できます。

$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
于 2012-08-11T05:22:36.500 に答える