web-dev-qa-db-ja.com

WindowsコマンドプロンプトからCPU使用率を取得する

Windowsコマンドプロンプトから合計CPU使用率を取得するにはどうすればよいですか?

期待される出力:

27%
40
Mike
C:\> wmic cpu get loadpercentage
LoadPercentage
0

または

C:\> @for /f "skip=1" %p in ('wmic cpu get loadpercentage') do @echo %p%
4%
80
Alex K.

以下は、昇格したコマンドプロンプトから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
11
mdm
typeperf "\processor(_total)\% processor time"

win7で動作するため、最後に引用された文字列から自分でパーセント値を抽出するだけです。

8
PowerApp101

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}"
1
Amit Naidu