首页/系统/Windows 运维速查/Get-Service 查询服务

Get-Service 查询服务

PowerShell 结构化查询服务:名称、状态、启动类型与显示名,支持通配与管道过滤。

Windows 运维速查系统更新于 2026-10-13

Get-Service 是什么

Get-Service 用来查询 Windows 服务的名称、显示名、启动类型与运行状态,返回的是服务对象而不是文本。因为结果是对象,可以直接按状态过滤、按启动类型筛选,也可以与管道上的其它命令组合,做出「所有自动启动但当前未运行的服务」这类精确查询。服务对象里还带有依赖关系信息,排查一个服务为什么不启动时,能顺着依赖链找到真正的源头。相比命令行查询工具,它不需要记忆参数格式,属性名即查询条件。

基本信息

适用平台Windows PowerShell 5.1 与 PowerShell 7 及以上
语法Get-Service [[-Name] <名称>] [-DisplayName <显示名>] [-DependentServices] [-RequiredServices] [-Include <相关服务>]
名称写法支持通配符;脚本里建议用短名匹配,避免依赖本地化显示名
常用属性Name、DisplayName、Status、StartType、ServicesDependedOn
权限查询无需提升;修改状态需要管理员
相关命令启动、停止、重启服务有对应命令,配置启动类型需要单独修改

典型使用场景

  • 确认关键服务的运行状态,作为巡检项或变更后的验证
  • 筛出该自动启动却处于停止状态的服务,快速发现异常
  • 查看服务的依赖关系,判断启动失败的根因是否在依赖项
  • 批量导出服务清单,用于资产梳理或配置基线比对
  • 按状态过滤后统计数据,观察整体健康度
  • 与远程会话机制配合,批量检查多台主机的同一服务

常用示例

常用示例
# 查询单个服务
Get-Service -Name Spooler
# 查看关键属性
Get-Service wuauserv | Select-Object Name, DisplayName, StartType, Status
# 列出所有已停止的服务(取前 20 条)
Get-Service | Where-Object Status -eq Stopped | Select-Object -First 20
# 找出设为自动启动但当前未运行的服务
Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' }
# 查看依赖关系
Get-Service -Name W3SVC -DependentServices -RequiredServices
# 按显示名筛选(含通配符)
Get-Service -DisplayName *print*

属性与取值

属性取值示例说明
NameSpooler服务短名,脚本里用它最稳
DisplayNamePrint Spooler随系统语言变化,不建议用于脚本匹配
StatusRunning、Stopped、StartPending 等过渡状态说明服务正在启动或停止
StartTypeAutomatic、Manual、Disabled自动延迟启动同样显示为自动
ServicesDependedOn依赖的服务对象列表依赖项未启动常导致目标服务无法启动
自动延迟启动的服务,启动类型显示为自动,但开机后并不会立刻运行。看到状态是停止而启动类型是自动时,先确认它是不是延迟启动类型,避免误判为故障。
需要跨主机检查时把它放进远程执行命令里,结果会带上目标主机名列,直接分组或导出就能得到全量视图,比逐台上机查看快得多。

易错点

  • 用显示名做脚本匹配:显示名随系统语言变化,中文环境下同一脚本在英文系统上会匹配失败,应统一用短名
  • 把过渡状态当成故障:启动中与停止中是短暂状态,稍后再查即可,不必立刻干预
  • 忽视延迟启动:自动延迟启动的服务开机后一段时间才运行,直接判定为异常会误报
  • 只看目标服务不看依赖:依赖项没起来时目标服务会一直失败,排查要顺着依赖链往下看
  • 查询不存在的服务名称时未做容错:会抛出错误并中断脚本,批量场景应加容错参数并校验结果

数据来源与参考

  • Microsoft Learn:Get-Service

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌