我想要获取 powershell 中 CPU 列中任何进程在任务管理器中显示的值。
我尝试使用
Get-Process ProcessName | Select-Object -Property CPU
但它只返回花费的时间。
答案1
尝试使用Get-Counter
命令从系统的性能监视器中提取数据。对于您的示例,它看起来如下:
# ~> Get-Counter "\Process(ProcessName*)\% Processor Time" | select -expand countersamples
举个例子,使用 chrome:
# ~> Get-Counter "\Process(chrome*)\% Processor Time" | select -expand countersamples
Path InstanceName CookedValue
---- ------------ -----------
\\machinename\process(chrome#7)\% processor time chrome 0
\\machinename\process(chrome#6)\% processor time chrome 0
\\machinename\process(chrome#5)\% processor time chrome 0
\\machinename\process(chrome#4)\% processor time chrome 0
\\machinename\process(chrome#3)\% processor time chrome 0
\\machinename\process(chrome#2)\% processor time chrome 0
\\machinename\process(chrome#1)\% processor time chrome 0
\\machinename\process(chrome)\% processor time chrome 3.10141153081511
答案2
Get-Counter
以下是使用和进行过滤过程的一些可复制粘贴的示例Get-WmiObject
。
例如,获取 CPU 使用率排名前 10 的进程:
powershell "(Get-Counter '\Process(*)\% Processor Time').Countersamples | Sort cookedvalue -Desc| Select -First 10 instancename, cookedvalue"
或者,使用更清晰的格式:
powershell "(Get-Counter '\Process(*)\% Processor Time').Countersamples | Sort cookedvalue -Desc | Select -First 10 instancename, @{Name='CPU %';Expr={[Math]::Round($_.CookedValue)}}"
powershell "gwmi Win32_PerfFormattedData_PerfProc_Process | Sort PercentProcessorTime -desc | Select -first 7 Name, PercentProcessorTime, IOReadBytesPersec, IOWriteBytesPersec, WorkingSet | ft -autoformat"
答案3
我要实现这一目标的更简单的方法是
get-process processName | where-object {$_.cpu -gt desirevalue}