Windowsコマンドプロンプトから合計CPU使用率を取得するにはどうすればよいですか?
期待される出力:
27%
C:\> wmic cpu get loadpercentage
LoadPercentage
0
または
C:\> @for /f "skip=1" %p in ('wmic cpu get loadpercentage') do @echo %p%
4%
以下は、昇格したコマンドプロンプトからWindows 7 Ultimateで正常に動作します。
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>
またはスナップショットの場合:
C:\Windows\system32>wmic cpu get loadpercentage
LoadPercentage
8
typeperf "\processor(_total)\% processor time"
win7で動作するため、最後に引用された文字列から自分でパーセント値を抽出するだけです。
typeperf
は、一部のコンピューターでランダムに機能しない場合(Error: No valid counters.
)、またはアカウントに十分な権限がない場合に問題を発生させます。それ以外の場合は、出力から値のみを抽出する方法があります。ただし、まだ丸めが必要です。
@for /f "delims=, tokens=2" %p in ('typeperf "\Processor(_Total)\% Processor Time" -sc 3 ^| find ":"') do @echo %~p%
Powershellには、すべてのCPUの使用率を取得する2つのコマンドレットがあります:Get-Counter
(優先)またはGet-WmiObject
:
Powershell "Get-Counter '\Processor(*)\% Processor Time' | Select -Expand Countersamples | Select InstanceName, CookedValue"
または、
Powershell "Get-WmiObject Win32_PerfFormattedData_PerfOS_Processor | Select Name, PercentProcessorTime"
質問のようにフォーマットされた出力で全体的なCPU負荷を取得するには:
Powershell "[string][int](Get-Counter '\Processor(*)\% Processor Time').Countersamples[0].CookedValue + '%'"
または、
Powershell "gwmi Win32_PerfFormattedData_PerfOS_Processor | Select -First 1 | %{'{0}%' -f $_.PercentProcessorTime}"