typeperf
вызывает у меня проблемы, когда он случайно не работает на некоторых компьютерах (Error: No valid counters.
) или если у учетной записи недостаточно прав.Иначе, вот способ извлечь только значение из его вывода.Тем не менее, требуется округление:
@for /f "delims=, tokens=2" %p in ('typeperf "\Processor(_Total)\% Processor Time" -sc 3 ^| find ":"') do @echo %~p%
У Powershell есть два командлета для получения процента использования для всех процессоров: 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"
Чтобы получить общую загрузку ЦП с форматированным выводом в точности как в вопросе:
Powershell "[string][int](Get-Counter '\Processor(*)\% Processor Time').Countersamples[0].CookedValue + '%'"
Или
Powershell "gwmi Win32_PerfFormattedData_PerfOS_Processor | Select -First 1 | %{'{0}%' -f $_.PercentProcessorTime}"