如何用PowerShell显示含进程ID、名称的CPU百分比(仅指定列)
解决PowerShell进程CPU百分比显示问题
方法一:基于原有Get-Process命令修改
如果你想沿用原命令的基础逻辑,只需替换CPU列为计算属性来得到百分比,同时移除不需要的ThreadCount字段:
Get-Process | Sort-Object CPU -Descending | Select-Object ID, Name, @{ Name='CPU%'; Expression={ # 结合总CPU使用率与核心数计算实时百分比,保留两位小数 [math]::Round($_.CPU / ((Get-Counter '\Processor(_Total)\% Processor Time').CounterSamples.CookedValue * $env:NUMBER_OF_PROCESSORS), 2) } } -First 10
方法二:直接获取实时CPU百分比(更准确)
Get-Process的CPU字段是累计耗时,实时性不足。用Get-Counter直接读取进程的CPU使用率指标更精准:
Get-Counter '\Process(*)\% Processor Time' | Select-Object -ExpandProperty CounterSamples | # 排除空闲进程和总进程统计 Where-Object InstanceName -notmatch '^(idle|_total)$' | Sort-Object CookedValue -Descending | Select-Object @{Name='ID';Expression={(Get-Process -Name $_.InstanceName -ErrorAction SilentlyContinue).Id}}, @{Name='Name';Expression={$_.InstanceName}}, @{Name='CPU%';Expression={[math]::Round($_.CookedValue, 2)}} -First 10
关键说明
- 两种方法都将结果列限定为
ID、Name、CPU%三列 - 用
[math]::Round()对百分比结果保留两位小数,提升可读性 - 方法二会自动排除系统空闲进程和总CPU统计项,结果更贴合实际需求
内容的提问来源于stack exchange,提问作者user21446047
相关产品推荐
相关产品推荐

