在 powershell 中获取进程的 CPU

在 powershell 中获取进程的 CPU

我想要获取 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}

相关内容