2016-11-08 10 views
0

平均的なCPU使用率で上位のいくつかのプロセスを数秒間にわたって識別したいと考えています。それぞれの結果は、PID、プロセス名、およびユーザーIDをリストする必要があります。 スクリプトは、別のドメインにある複数のサーバーで同時に実行する必要があります。これらのサーバーの資格情報は、実行されているコンピューターとは異なります。カウントが値と等しい場合の結果の表示

Get-Processは、–credentialsパラメータを受け入れないため動作しません。これらのサーバーではスクリプトが制限されているため、 Invoke-Commandは機能しません。

User Name     CPU  ID Description          
---------     ---  -- -----------          
User73      25 68680 App89.exe        
User73      25 68888 App57.exe        
LOCAL SERVICE    2.5 63868 WmiPrvSE.exe          
User48      0 66308 App38.exe          
User48      0 62608 App54.exe       
User73      25 68888 App57.exe        
User73      25 68680 App89.exe        
LOCAL SERVICE    2.5 63868 WmiPrvSE.exe          
User48      0 59336 dwm.exe           
User48      0 52528 App57.exe        
User73      25 68888 App57.exe        
User73      25 68680 App89.exe        
User39      19.5 48792 App43.exe      
User39      2.5 65996 App48.exe        
LOCAL SERVICE    2.5 63868 WmiPrvSE.exe 

が、私は3回を15以上のCPUを持っていると記載されているだけの結果を一覧表示する必要があるだけで、それぞれ一度と

$Result = $TopProcess | Where {$_.CPU -gt $Threshold} | Measure | Where {$_.Count -eq $NoRS} 
を一覧表示する: 私は $TopProcessになってしまったものです

は何も返しません。

答えて

1

Measureの代わりにGroup-Objectコマンドレットを使用して結果をグループ化します。私はあなただけがUserNameのプロパティを取得したいと思うと思う:

$Result = $TopProcess | 
    Where {$_.CPU -gt $Threshold} | 
    group 'User Name' | 
    Where Count -eq $NoRS | 
    select Name 
+0

@マーティン。例に基づいて私は最初の2行を参照することを期待したい: 'User73 25 68680をApp89.exe User73 25 68888 App57.exe' 私は' Group'と私の 'IF($結果を!)を使用してみました'それはnullも返すことを示しています。 –

+0

ああ、あなたはまた、IDのためにグループ化する必要があります。 –

+0

私は各パイプをチェックする新しい変数に分割し、 'Group'は期待されるカウントを与えます。グループ化された結果を読み込み可能なテーブルに再フォーマットする必要があります。 –

関連する問題