最直接有效的方式是用 PowerShell 的 Get-Service 命令导出服务状态清单,支持中文、无需管理员权限、结果结构清晰且可导出为 UTF8 编码 CSV 文件供 Excel 打开;还可筛选已停止但设为自动启动的服务用于重点排查,或用 sc query 作为老旧系统的兼容备选方案,并建议添加时间戳避免覆盖历史记录。
最直接有效的方式是用 powershell 的 get-service 命令,它默认支持中文、不乱码、无需管理员权限就能导出完整状态清单,且结果结构清晰,适合后续查看或导入 excel。
用 Get-Service 导出标准服务状态清单
这条命令能一次性获取所有服务的名称、显示名、当前状态和启动类型,并导出为 CSV 文件(Excel 可直接打开):
- 以普通用户身份打开 PowerShell(无需管理员)
- 运行以下命令:
Get-Service | Select-Object Name, DisplayName, Status, StartType | Export-Csv -Path "services.csv" -NoTypeInformation -Encoding UTF8 - 生成的 services.csv 文件包含四列:服务内部名、显示名称、当前运行状态(Running/Stopped)、启动类型(Automatic/Manual/Disabled)
- 如需按状态排序(比如把“Stopped”服务排前面),加 | Sort-Object Status, Name 在管道中
只导出已停止但设为自动启动的服务(排查异常)
这类服务可能本该自启却没起来,是运维巡检的重点:
- 运行:
Get-Service | Where-Object {$_.Status -eq 'Stopped' -and $_.StartType -eq 'Automatic'} | Select-Object Name, DisplayName, StartType, Status | Export-Csv "stopped_auto.csv" -NoTypeInformation -Encoding UTF8 - 输出文件里只保留真正值得关注的潜在问题项,便于快速定位
用 sc query 快速生成基础文本(兼容性最强)
如果目标机器是老旧系统或受限环境(比如不能运行 PowerShell),sc query 是最稳妥的备选:
- 在 CMD 或 PowerShell 中运行:
sc query state= all | findstr "SERVICE_NAME DisplayName" > services_basic.txt - 生成的文本虽无表格结构,但每两行一组,分别标有 SERVICE_NAME 和 DisplayName,适合人工快速浏览
- 注意:输出编码默认是 GBK,用记事本打开正常,但用 VS Code 或 Python 处理时建议另存为 UTF-8
加时间戳避免覆盖历史记录
日常运维建议每次导出都带时间标记,方便比对变化:
- PowerShell 一行搞定:
$ts = Get-Date -Format "yyyyMMdd_HHmmss"; Get-Service | Select-Object Name,DisplayName,Status,StartType | Export-Csv "services_$ts.csv" -NoTypeInformation -Encoding UTF8 - 生成类似 services_20260507_130522.csv 的文件名,清晰可追溯











