Há outra maneira de consultar os contadores de desempenho por meio do WMI que, acredito, fornecerá o que você deseja depois. A saída também inclui o ID do processo, que é útil ao rastrear um processo que possui várias instâncias. Ele também usa o que é chamado de "propriedade calculada" em select-object
para converter o valor do conjunto de trabalho de bytes em megabytes. Observe também que a CPU máxima em um sistema de 4 núcleos é de 400, não de 100. Portanto, para obter a utilização geral (que é um máximo de 100), é necessário dividir o valor de CPU de cada processo pelo número de núcleos.
$cores = (Get-WmiObject Win32_Processor).NumberOfLogicalProcessors
while ($true) {
Get-WmiObject Win32_PerfFormattedData_PerfProc_Process |
Where-Object {$_.Name -notmatch "^(idle|_total|system)$" -and $_.PercentProcessorTime -gt 0} |
Format-Table -Autosize -Property @{Name = "CPU"; Expression = {[int]($_.PercentProcessorTime/$cores)}}, Name, @{Name = "PID"; Expression = {$_.IDProcess}}, @{"Name" = "WSP(MB)"; Expression = {[int]($_.WorkingSetPrivate/1mb)}}
Start-Sleep 5
}
CPU Name PID WSP(MB)
--- ---- --------- -------
1 chrome 12476 64
2 wuauclt 7504 0
3 SearchIndexer 10128 22
4 TIworker 11380 102