PowerShell管道命令通过组合Get-Process与Where-Object、Select-Object、Sort-Object等实现进程信息的灵活筛选、字段提取、排序及导出;支持模糊/精确匹配进程名、按CPU/内存/线程数等条件过滤,并可格式化输出或导出CSV、终止进程。
powershell 管道命令过滤进程信息,核心是组合 get-process 与筛选、选择、排序等管道命令。它比 cmd 的 tasklist + findstr 更灵活、更结构化,能精准定位进程名、pid、cpu 或内存占用等关键字段。
按进程名模糊匹配
最常用场景:查某个软件(如 chrome、notepad)是否在运行。
Get-Process | Where-Object { $_.Name -like "*chrome*" }-
Get-Process | ? { $_.Name -eq "svchost" }(精确匹配,不带扩展名) - 支持通配符:
"*win*"、"powershell*",大小写不敏感
只显示指定列并美化输出
默认输出信息太多,用 Select-Object 提取关键字段,再用 Format-Table 控制显示宽度。
Get-Process | ? { $_.CPU -gt 100 } | Select-Object Id, Name, CPU, WS | Sort-Object CPU -Descending | Format-Table -AutoSize-
WS是工作集内存(单位字节),可换为PM(分页内存)或VM(虚拟内存) -
-AutoSize自动适配列宽,避免截断;加-Wrap可强制换行显示长名
结合资源占用条件筛选
不只是看名字,还能按 CPU、内存、线程数等动态指标实时排查异常进程。
- 查内存占用前 5 名:
Get-Process | Sort-Object WS -Descending | Select-Object -First 5 Name, Id, @{Name='MemoryMB';Expression={[math]::Round($_.WS/1MB,2)}} - 查超过 100 个线程的进程:
Get-Process | Where-Object { $_.Threads.Count -gt 100 } | Select-Object Name, Id, Threads.Count - 计算表达式字段(如内存 MB)需用
@{Name='xxx';Expression={...}}语法
导出结果到文件或进一步处理
筛选后不光看,还能保存或联动其他操作。
- 导出为 CSV:
Get-Process | ? { $_.Name -like "*java*" } | Select-Object Id, Name, CPU, WS | Export-Csv -Path "java_procs.csv" -NoTypeInformation - 批量终止进程:
Get-Process | ? { $_.Name -eq "firefox" } | Stop-Process -Force(谨慎执行) - 配合
ForEach-Object做自定义动作,比如检查每个进程的路径:Get-Process notepad | ForEach-Object { $_.Path }

















