跳转到主内容
极星编程网:以代码为星,赴技术山海!

Windows服务管理器中导出服务列表到文本的运维脚本

可通过命令行导出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 输出上下文行)

小技巧:一键生成带时间戳的导出文件避免覆盖历史记录,建议在脚本中加入时间标识:PowerShell 示例:$ts = Get-Date -Format "yyyyMMdd_HHmmss"; Get-Service | Sort-Object Status,Name | Export-Csv "services_$ts.csv" -NoTypeInformation -Encoding UTF8生成类似services_20241025_143022.csv的文件,便于版本追踪和变更比对

相关文章