1

성능 카운터를 N 초마다 지속적으로 폴링 한 다음 카운터에서 반환 한 값의 합계를 계산하는 PowerShell 스크립트를 작성하려고합니다. 제 최종 목표는 12 개 정도의 결과를 얻는 것입니다. 모니터링 및보고를 위해 카운터를 굴려서 Graphite 서버로 옮기십시오.Measure-Object - 연속 카운터 카운터의 모든 카운터 샘플을 내 보냅니다.

지금까지 내가 특정 카운터에 대해 함께 자갈을 썼다. PowerShell 마법 부두의 땅에서 몇 가지 방법을 얻는 방법을 모르겠다.

  1. while 루프를 자동화 할 수 있도록 작업 ID를 정수로 가져 오는 방법을 알아낼 수 없습니다.
  2. Measive-Object로 파이프하여 Sum을 얻을 수있는 CounterSample 데이터 만 Receive-Job에서 반환하십시오.

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

나는 동적 PowerShell을 v1.0을 또는 2.0에서 윈도우 상자에서 활성 NIC를 결정하는 간단한 또는 효과적인 방법을 알고 싶어요. "\ Network Interface (*) \"는 작동하지만 모든 것을 제공합니다.

답변

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 
+0

첫 번째 부분이 완벽하게 작동합니다. 이제 {}로 명령을 래핑 할 때 일어나는 변수 변화를 배우십시오. 나는 RTFM에 의해 그 값을 얻기 위해 - um - Average 등을 전달해야한다는 것을 알게되었습니다. – mattsn0w

+0

단지 데이터 포인트를 계산하는 것이 아니라 값을 합산하도록 업데이트되었습니다. –