2016-11-08 48 views
0

我想確定在幾秒鐘內平均CPU使用率的前幾個進程。每個結果都需要列出PID,進程名稱和用戶ID。 腳本需要同時在多個服務器上運行,而這些服務器位於另一個域中。這些服務器的憑據與正在運行的計算機的憑據不同。顯示結果,其中計數等於值

我不能讓Get-Process工作,因爲它不接受–credentials參數。 Invoke-Command將不起作用,因爲這些服務器上的腳本受到限制。 我在$TopProcess結束得到的是:

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 

,但我需要僅列出了15 CPU,並列出了三個時代的結果,但只列出各一次,

$Result = $TopProcess | Where {$_.CPU -gt $Threshold} | Measure | Where {$_.Count -eq $NoRS} 

什麼都不返回。

回答

1

使用Group-Object cmdlet而不是Measure對結果進行分組。我想你只想得到UserName財產:

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

感謝您的快速反應@馬丁。基於這個例子,我期望看到只有前兩行: 'User73 25 68680 App89.exe User73 25 68888 App57.exe' 我試過使用'Group'和我的'If(!$ Result) '顯示它也返回null。 –

+0

哦,那麼你也必須爲這個ID分組。 –

+0

我將每個管道分成一個新的變量來檢查和「Group」給出預期的計數。我現在需要將分組結果重新格式化爲可讀表格。 –