답변을 사용할 수 있습니다. CPU 비율 .
While(1) { $p = get-counter '\Process(*)\% Processor Time'; cls; $p.CounterSamples | sort -des CookedValue | select -f 15 | ft -a}
이제 컴퓨터의 작업에 대해 메모리 사용량과 CPU 백분율을 동시에 표시 할 수있는 문제가 있습니다.
알아 Get-Counter "\Process(*)\Working Set - Private" 메모리를 얻지 만 ID는 태스크, CPU % 및 메모리 사용량을 동시에 표시합니다.
업데이트 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
이면의 단점은 정보를 한 번 표시 한 후에 실패하고 이유를 알 수 없다는 것입니다. 어떤 도움이 필요합니까?
업데이트 : 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 마지막이어야합니다.
Get-Counter "\Process(*)\Working Set - Private"? 그것은 실제로 코드를 작성하는 것으로 간주되지 않기 때문입니다. 그러나 그것이 당신이 가진 전부라면 그것이 당신이 가진 전부입니다.