powershell通过group-object按status属性对get-service输出的服务对象分组实现分类效果,每组含同状态服务对象及数量统计,支持筛选、格式化、导出等后续操作。
powershell 对象管道本身不直接“分类”对象,但可以通过 group-object 命令按服务的 status 属性对服务对象进行分组,实现逻辑上的分类效果。关键在于:服务对象(如 get-service 输出)天然携带 status 属性,管道传递的是完整对象,不是文本,因此可直接基于该属性分组。
用 Group-Object 按 Status 分组显示
执行以下命令,将所有服务按运行状态(Running、Stopped、Paused 等)分组:
Get-Service | Group-Object Status
输出类似:
Count Name Group----- ---- -----
123 Running {@{Name=..., Status=Running, ...}, ...}
87 Stopped {@{Name=..., Status=Stopped, ...}, ...}
2 Paused {@{Name=..., Status=Paused, ...}}
每组包含同状态的所有服务对象,Count 显示数量,Group 是原始对象集合,后续可进一步处理。
查看某类状态下的具体服务列表
若只想看正在运行的服务名称和显示名,可在分组后筛选并格式化:
直播话术巡检系统(Windows版) — 实时语音转写、关键词检测、场景自动切换、告警推送、大屏可视化。支持 Windows VB-Cable 虚拟声卡音频采集,阿里云 ASR 实时识别。一键启动脚本,自动安装环境。
Get-Service | Where-Object Status -eq 'Running' | Format-Table Name, DisplayName -AutoSize
或结合分组结果展开特定组:
(Get-Service | Group-Object Status)['Running'].Group | Select-Object Name, DisplayName
导出各状态服务到不同 CSV 文件
若需持久化分类结果,可对每个分组单独导出:
Get-Service | Group-Object Status | ForEach-Object {<br> $status = $_.Name<br> $_.Group | Export-Csv "Services_$status.csv" -NoTypeInformation<br>}
生成如 Services_Running.csv、Services_Stopped.csv 等文件,内容为对应状态的完整服务对象属性。
注意 Status 属性与 state 属性的区别
Get-Service 返回的对象用 Status 属性(值如 Running、Stopped);而 Get-CimInstance win32_service 返回的对象用 State 属性(值如 Running、Stopped,但大小写可能不同)。分组前请确认来源命令及对应属性名,避免筛选失败。










