查看进程的 CPU、内存、句柄和响应状态,输出可计算、可筛选的进程对象。
Get-Process 返回 System.Diagnostics.Process 对象,包含 Id、ProcessName、WorkingSet64、CPU、Responding、StartTime、Path 等属性;常见别名是 gps 和 ps。它不是 tasklist 的文本快照,WorkingSet64 以字节为单位,可以直接排序、求和或换算。
管道:-Name、-Id 可按属性名接收字符串或整数,不接受 Process 对象回灌;对结果再筛选用 Where-Object,把结果交给 Stop-Process 则按对象或 Id 绑定。权限:标准用户可以枚举进程名、ID 和基本内存信息;-IncludeUserName、-Module,以及其他用户进程的 Path、StartTime 通常需要管理员权限。
边界:同名进程可能有多个实例,单看名称无法定位;CPU 是进程启动以来累计的处理器秒数,不是当前占用率。版本:5.1 仅 Windows;7.x 跨平台,Unix 上进程对象属性和部分参数不同,-IncludeUserName 等 Windows 专有行为不能照搬。
# 1. 找内存占用最高的 5 个进程,并换算成 MB
PS C:\> Get-Process | Sort-Object WorkingSet64 -Descending | Select-Object -First 5 Name, Id, @{n='MB';e={[math]::Round($_.WorkingSet64/1MB,1)}}
# 2. 按名称查所有实例,附带 CPU 累计秒数和启动时间
PS C:\> Get-Process -Name chrome -ErrorAction SilentlyContinue | Select-Object Id, CPU, StartTime
# 3. 找无响应的 GUI 进程,先确认再决定是否结束
PS C:\> Get-Process | Where-Object { -not $_.Responding } | Select-Object Name, Id, Responding
# 4. 查看当前 PowerShell 进程的路径和启动时间
PS C:\> Get-Process -Id $PID | Format-List Name, Id, Path, StartTime
# 5. 按会话统计 svchost 实例,理解一个进程可承载多个服务
PS C:\> Get-Process svchost | Group-Object SessionId | Select-Object Name, Count
# 6. 按累计 CPU 时间排序,定位长期占用的进程
PS C:\> Get-Process | Sort-Object CPU -Descending | Select-Object -First 5 Name, CPU
.exe,Get-Process notepad.exe 可能匹配不到;用 Get-Process notepad,名称含通配符时加引号。Stop-Process -Name 会结束全部;先 Select-Object Id, StartTime 确认目标,再按 Id 操作。CPU 是累计处理器秒数,不是百分比;要算占用率,需间隔采样两次并除以时间与逻辑处理器数。WorkingSet64 是物理内存工作集,PrivateMemorySize64 才是私有提交内存;排查泄漏时两个都看。Path、StartTime 可能为空或报错;需要这些字段时提升权限。-ErrorAction SilentlyContinue。Responding、MainWindowTitle 等 Windows 属性;跨平台脚本先判断 $IsWindows。Stop-Process — 按对象或 Id 终止进程。Get-Service — 从服务角度查看同一批后台进程。tasklist — CMD 的文本进程列表。taskkill — CMD 的进程终止命令。合上页面,先回答,再展开对照。
Get-Process 的 CPU 属性能直接当作当前 CPU 占用率吗?Path?Id、StartTime、Path 确认目标实例,再 Stop-Process -Id;不要直接用 -Name 结束全部。
小程序版
微信扫码,随时查命令