我希望能夠每5秒鐘向最高CPU使用者輸出日誌文件。這樣我就可以在我的測試中看到誰使用了最多的CPU。連續監測前X個進程的CPU使用率%
我發現這個答案很常見:
$cpu = Get-Counter -ComputerName localhost "\Process(*)\% Processor Time" `
| Select-Object -ExpandProperty countersamples `
| where {$_.InstanceName -ne 'idle' } `
| where {$_.InstanceName -ne '_total' }`
| Select-Object -Property instancename, cookedvalue `
| Sort-Object -Property cookedvalue -Descending `
| Select-Object -First 5 `
| ft @{L='Date';E={Get-Date}}, InstanceName, @{L='CPU';E={(($_.Cookedvalue/100)/$NumberOfLogicalProcessors).toString('P')}} -HideTableHeaders `
| Format-Table -Auto | Out-String
我有2個問題吧:
有時候我:
獲取計數器,在數據性能計數器樣本之一無效。查看每個PerformanceCounterSample對象的Status屬性以確保它包含有效數據。
我想獲得全過程的名稱,而不是
java 25% idea64 0.8% ...
在你的回答中發現'-ErrorAction SilentlyContinue'爲我節省了很多挫折。我希望它被記錄在[Get-Counter Microsoft Documentation](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.diagnostics/get-counter?view = powershell-6) –