首页/系统/Windows 运维速查/Get-Process 进程对象查询

Get-Process 进程对象查询

PowerShell 结构化进程查询:CPU、内存、句柄、路径等属性齐全,天然适合排序与筛选。

Windows 运维速查系统更新于 2026-10-13

Get-Process 是什么

Get-Process 用来列出本机进程并读取它们的属性,返回的是进程对象而不是文本表格。对象里带着名称、编号、线程数与句柄数、工作集内存、累计处理器时间、可执行文件路径、启动时间等字段,因此可以直接排序、过滤、汇总与导出。相比任务管理器的界面,它在远程会话里同样可用,也便于把结果写进脚本做巡检;相比 tasklist,它的优势在于能按属性名精确取数,不受输出列宽与语言影响。

基本信息

适用平台Windows PowerShell 5.1 与 PowerShell 7 及以上
语法Get-Process [[-Name] <名称>] [-Id <编号>] [-IncludeUserName] [-FileVersionInfo]
返回值System.Diagnostics.Process 对象,可按属性过滤与排序
常用属性Name、Id、CPU、WorkingSet64、Handles、Threads、Path、StartTime
名称写法可省略 .exe 后缀,也支持通配符;与 -Id 二选一或组合使用
权限普通用户可查询;用户名列与部分系统进程的路径需要管理员

典型使用场景

  • 资源排行:按累计处理器时间或工作集内存排序,找出占用最高的进程
  • 进程盘点:统计同类进程的实例数量,确认是否有多余副本
  • 定位程序:用编号反查进程名与可执行文件路径,配合端口排查
  • 巡检采样:定时记录内存与句柄数,观察是否持续增长
  • 清理前确认:结束进程之前核实身份与启动时间,避免误杀
  • 用户维度排查:启用用户名显示后判断进程由哪个账户启动

常用示例

常用示例
# 按累计 CPU 时间排序取前 10
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10 Name, Id, CPU
# 用编号反查进程,带上路径与启动时间
Get-Process -Id 4 | Select-Object Name, Path, StartTime
# 按名称精确查询,支持通配
Get-Process -Name chrome* | Select-Object Name, Id, WS
# 查看由谁启动的进程(需管理员)
Get-Process -IncludeUserName | Where-Object UserName -like *admin*
# 统计同类进程实例数量
(Get-Process -Name w3wp -ErrorAction SilentlyContinue).Count
# 采样两次比较实时占用
$t1 = Get-Process | Select-Object Id, CPU; Start-Sleep 5; $t2 = Get-Process | Select-Object Id, CPU

常用属性读法

属性含义使用注意
Name进程名称,通常不含可执行文件后缀同名多实例时会返回多个对象
Id进程编号,与端口排查中的编号一致重启后编号会变化,不能长期引用
CPU累计处理器时间,单位为秒是历史累计值,比较实时占用需两次采样做差
WorkingSet64当前物理内存工作集,单位为字节换算成兆字节更直观,也便于设阈值
Handles打开的句柄数持续增长往往意味着句柄泄漏
Path可执行文件路径系统进程可能因权限不足为空值
StartTime进程启动时间用来判断是否发生了意外的重启
CPU 属性是累计处理器时间而不是瞬时占用率。想比较实时占用,要在间隔若干秒后取两次快照做差值,或直接使用性能计数器,单看一次结果会偏向运行时间长的进程。
查询某个名称的进程失败时默认会报错,批量场景建议加 -ErrorAction SilentlyContinue,并另外判断结果是否为空,避免因为一个名称不存在而中断整段脚本。
路径与用户名两列在普通权限下经常为空,这不是查询失败,而是权限不足导致的属性不可见;需要这些字段时请用管理员会话执行。

按用途选属性

排查目标先看属性理由
内存占用偏高WorkingSet64反映当前驻留物理内存,比虚拟内存更贴近压力
疑似句柄泄漏Handles长期单调增长基本可判定存在泄漏
CPU 持续走高CPU 与采样差值累计值必须做差才有实时意义
程序来源不明Path可确定可执行文件位置,识别非预期副本
异常重启判断StartTime启动时间与系统事件表比对可确认重启
实例数量异常按名称计数多个同名实例会造成资源争抢

易错点

  • 把 CPU 属性当成实时占用率:它是累计秒数,运行越久数值越大,直接用它会得出错误结论
  • 用进程编号做长期记录:编号在进程重启后会变化,跨时间对比必须换成名称或启动时间
  • 期望 Path 一定有值:系统进程在权限不足时返回空,需要管理员会话才能取到
  • 查询不存在的名称导致脚本中断:应先确认名称再批量调用,或加上容错参数
  • 按名称结束进程而不核对身份:同名进程可能有多个实例或分属不同业务,先查看再动手

数据来源与参考

  • Microsoft Learn:Get-Process

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌