在PowerShell中获取Windows正在运行的服务最直接方法是使用Get-Service | ? Status -eq Running,可筛选、搜索、导出及脚本化判断服务状态。
在 powershell 中获取 windows 正在运行的服务,最直接的方法是使用 get-service 命令,并配合筛选状态为 running 的服务。
查看所有正在运行的服务
执行以下命令即可列出当前系统中所有处于“正在运行”状态的服务:
- Get-Service | Where-Object {$_.Status -eq 'Running'}
- 更简洁写法:Get-Service | ? Status -eq Running
该命令会显示服务名(Name)、显示名称(DisplayName)和当前状态(Status)。若只关心服务名和显示名,可追加 | Select-Object Name,DisplayName 进一步精简输出。
按名称或显示名搜索特定运行中的服务
当你知道服务的部分名称(例如 “win” 或 “dhcp”),可用通配符快速定位:
- Get-Service *win* | ? Status -eq Running —— 查找名称含 “win” 且正在运行的服务(如 WinRM、WinDefend)
- Get-Service | ? DisplayName -like "*防火墙*" | ? Status -eq Running —— 按中文显示名搜索(适用于系统语言为中文的环境)
导出运行服务列表到文件(便于分析或存档)
将结果保存为 CSV 或文本文件,方便后续查看或比对:
- Get-Service | ? Status -eq Running | Export-Csv -Path .\RunningServices.csv -NoTypeInformation
- Get-Service | ? Status -eq Running | Out-File -FilePath .\RunningServices.txt
生成的 CSV 文件可在 Excel 中打开,包含结构化字段;TXT 文件则为纯文本格式,适合快速浏览。
检查服务是否运行并做简单判断(脚本常用)
在自动化任务中,常需验证某个服务是否已启动。例如检查 “BITS” 服务:
- $svc = Get-Service BITS -ErrorAction SilentlyContinue
- if ($svc -and $svc.Status -eq 'Running') { Write-Host "BITS 正常运行" } else { Write-Host "BITS 未运行或不存在" }
注意加上 -ErrorAction SilentlyContinue 可避免服务不存在时报错中断脚本。


















