Я могу использовать процент процессора ответа.
While(1) { $p = get-counter '\Process(*)\% Processor Time'; cls; $p.CounterSamples | sort -des CookedValue | select -f 15 | ft -a}
Теперь у меня проблемы с возможностью одновременного отображения использования памяти и процентной доли процессора для задачи на компьютере.
Я знаю, что Get-Counter "\Process(*)\Working Set - Private"
получит память, но id хотел бы, чтобы одновременно отображались задание, загрузка процессора и использование памяти.
ОБНОВЛЕНИЕ 1: В идеале я хотел бы иметь возможность запускать это в powershell в виде набора команд. Я хотел бы, чтобы вывод отображался как:
Process Name CPU (%) Memory (MB)
------------ ------- -----------
Я возьму то, что смогу получить, когда дело доходит до отображения, которое можно обработать после того, как я смогу просто отобразить три элемента в powershell.
ОБНОВЛЕНИЕ 2: Этот раздел кода предоставляет то, что я хотел бы
while (1) {cls; Get-WmiObject Win32_PerfFormattedData_PerfProc_Process |
select-object -property Name, PercentProcessorTime, IDProcess, @{"Name" = "WSP(MB)"; Expression = {[int]($_.WorkingSetPrivate/1mb)}} |
? {$_.Name -notmatch "^(idle|_total|system)$"} |
Sort-Object -Property PercentProcessorTime -Descending|
ft -AutoSize |
Select-Object -First 15; start-sleep 5}
Это приводит к следующему отображению:
Name PercentProcessorTime IDProcess WSP(MB)
---- -------------------- --------- -------
MicrosoftEdgeCP#3 6 18972 6 WmiPrvSE#3 6 27300 7
svchost#22 0 7316 1
Единственным недостатком этого является то, что он терпит неудачу после одного показа информации, и я не знаю почему. Любая помощь в этом?
UPDATE:3
$cores = (Get-WmiObject Win32_Processor).NumberOfLogicalProcessors
while ($true) {
$tmp = Get-WmiObject Win32_PerfFormattedData_PerfProc_Process |
select-object -property Name, @{Name = "CPU"; Expression = {($_.PercentProcessorTime/$cores)}}, @{Name = "PID"; Expression = {$_.IDProcess}}, @{"Name" = "Memory(MB)"; Expression = {[int]($_.WorkingSetPrivate/1mb)}} |
Where-Object {$_.Name -notmatch "^(idle|_total|system)$"} |
Sort-Object -Property CPU -Descending|
Select-Object -First 15;
cls;
$tmp | Format-Table -Autosize -Property Name, CPU, PID, "Memory(MB)";
Start-Sleep 5
}
Выполняет все, в чем я нуждаюсь, и дает мне стартовую позицию в будущем, чтобы строить из нее. Проблема , которую я имел с таблицей форматировщиком, что format-table
должен быть последним.