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