可通过命令行导出windows服务列表:sc query导出基础信息,PowerShell导出含状态、启动类型等详细字段的制表符分隔文件,并支持按状态/启动类型筛选禁用或异常服务,且可添加时间戳避免覆盖。
在 windows 服务管理器(services.msc)中无法直接导出服务列表,但可通过命令行快速生成结构化文本文件,满足运维记录、比对或自动化分析需求。
使用 sc query 命令导出基础服务信息
sc query 是系统内置工具,无需额外安装,适合批量获取服务状态、名称和显示名称。执行以下命令可导出所有服务的简明列表:
- 以管理员身份打开命令提示符或 PowerShell
- 运行:sc query state= all | findstr “SERVICE_NAME DisplayName” > services_basic.txt
- 输出文件 services_basic.txt 包含每项服务的 SERVICE_NAME(内部名)和 DisplayName(显示名),按服务顺序排列
用 PowerShell 获取更完整字段并导出为制表符分隔文本
PowerShell 提供更丰富的属性支持(如状态、启动类型、描述、路径),适合深度运维场景:
- 运行以下命令(推荐保存为 export-services.ps1):
- Get-Service | foreach-Object {
$svc = Get-WmiObject Win32_Service -Filter “Name=’$($_.Name)'”
“$($_.Name)`t$($_.DisplayName)`t$($_.Status)`t$($svc.StartMode)`t$($svc.PathName)`t$($svc.Description)”
} | Out-File -Encoding UTF8 services_detailed.txt - 生成的 services_detailed.txt 包含:服务名、显示名、当前状态、启动类型、可执行路径、描述,各字段用制表符分隔,可用 excel 或 Notepad++ 直接打开
导出已禁用或非运行服务用于安全审计
排查潜在风险服务(如未启用但存在、手动启动却长期停止的服务)时,可针对性筛选:
- 仅导出“已停止”且“启动类型为自动”的服务(可能异常):Get-Service | Where-Object {$_.Status -eq ‘Stopped’ -and $_.StartType -eq ‘Automatic’} | select-Object Name,DisplayName,StartType,Status | Export-Csv -NoTypeInformation -Encoding UTF8 stopped_auto.csv
- 导出所有“禁用”服务:sc query state= all | findstr /C:”DISABLED” /B /A:1 > disabled_services.txt(配合 sc 输出上下文行)
小技巧:一键生成带时间戳的导出文件
避免覆盖历史记录,建议在脚本中加入时间标识: