Wie kann ich die gesamte CPU-Auslastung von der Windows-Eingabeaufforderung abrufen ?:
Erwartete Ausgabe:
27%
C:\> wmic cpu get loadpercentage
LoadPercentage
0
Oder
C:\> @for /f "skip=1" %p in ('wmic cpu get loadpercentage') do @echo %p%
4%
Das folgende funktioniert ordnungsgemäß unter Windows 7 Ultimate von einer Eingabeaufforderung mit erhöhtem Befehl:
C:\Windows\system32>typeperf "\Processor(_Total)\% Processor Time"
"(PDH-CSV 4.0)","\\vm\Processor(_Total)\% Processor Time"
"02/01/2012 14:10:59.361","0.648721"
"02/01/2012 14:11:00.362","2.986384"
"02/01/2012 14:11:01.364","0.000000"
"02/01/2012 14:11:02.366","0.000000"
"02/01/2012 14:11:03.367","1.038332"
The command completed successfully.
C:\Windows\system32>
Oder für einen Schnappschuss:
C:\Windows\system32>wmic cpu get loadpercentage
LoadPercentage
8
typeperf "\processor(_total)\% processor time"
funktioniert unter Win7, Sie müssen nur den Prozentwert selbst aus der letzten Zeichenfolge in Anführungszeichen extrahieren.
typeperf
gibt mir Probleme, wenn es auf einigen Computern zufällig nicht funktioniert (Error: No valid counters.
) oder wenn das Konto nicht über ausreichende Rechte verfügt. Ansonsten können Sie nur den Wert aus der Ausgabe extrahieren. Es muss jedoch noch gerundet werden:
@for /f "delims=, tokens=2" %p in ('typeperf "\Processor(_Total)\% Processor Time" -sc 3 ^| find ":"') do @echo %~p%
Powershell verfügt über zwei Cmdlets, um die prozentuale Auslastung aller CPUs zu ermitteln: Get-Counter
(bevorzugt) oder Get-WmiObject
:
Powershell "Get-Counter '\Processor(*)\% Processor Time' | Select -Expand Countersamples | Select InstanceName, CookedValue"
Oder,
Powershell "Get-WmiObject Win32_PerfFormattedData_PerfOS_Processor | Select Name, PercentProcessorTime"
So erhalten Sie die gesamte CPU-Last mit formatierter Ausgabe genau wie die Frage:
Powershell "[string][int](Get-Counter '\Processor(*)\% Processor Time').Countersamples[0].CookedValue + '%'"
Oder,
Powershell "gwmi Win32_PerfFormattedData_PerfOS_Processor | Select -First 1 | %{'{0}%' -f $_.PercentProcessorTime}"