系统学习 Windows 学习路径:从 CMD 到 PowerShell、系统网络,再到 WSL 与 Server

Get-Service

查看服务状态、启动类型和依赖,输出 ServiceController 对象。

补充说明

Get-Service 从服务控制管理器(SCM)读取服务,输出 System.ServiceProcess.ServiceController 对象,常用属性有 Name、DisplayName、Status、StartType、ServicesDependedOn;别名是 gsv 和 service。Status 可能是 Running、Stopped、StartPending、StopPending、Paused 等,StartType 是 Automatic、Manual、Disabled 等。

管道:-Name 可按属性名接收字符串;查询结果可直接管道给 Start-Service、Stop-Service(按 ServiceController 对象绑定)。权限:枚举服务通常所有用户都可以;启动、停止、修改启动类型需要管理员,或服务安全描述符授予的权限。

边界:服务不是进程,一个 svchost.exe 可以承载多个服务,按进程查不到服务名;服务状态是 SCM 快照,StartPending 时不要立即断言失败。版本:5.1 仅 Windows;7.x 在 Windows 上使用同一模块,Linux/macOS 没有 ServiceController,相关命令不可用。

常用示例

# 1. 列出正在运行的服务,按显示名排序便于人工查找
PS C:\> Get-Service | Where-Object Status -eq 'Running' | Sort-Object DisplayName

# 2. 按显示名通配符查找,名称不确定时很好用
PS C:\> Get-Service -DisplayName '*print*' | Select-Object Name, DisplayName, Status

# 3. 查看单个服务的状态和启动类型
PS C:\> Get-Service Spooler | Select-Object Name, DisplayName, Status, StartType

# 4. 查看某服务依赖哪些服务,排启动顺序问题
PS C:\> Get-Service -Name LanmanServer -RequiredServices | Select-Object Name, Status

# 5. 找“自动启动但当前没运行”的服务,常是故障线索
PS C:\> Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' }

# 6. 导出服务清单,便于对比两台机器
PS C:\> Get-Service | Select-Object Name, Status, StartType | Export-Csv C:\Temp\services.csv -NoTypeInformation

易错点与排错

相关命令

参考链接

读完自测

合上页面,先回答,再展开对照。

  1. Get-Service "Print Spooler" 为什么可能找不到服务?
  2. StartType 为 Automatic 是否等于当前正在运行?
  3. 怎样判断一个服务启动失败是不是依赖服务没起来?
答案
  1. 参数匹配的是服务名 Spooler,不是显示名;用 -DisplayName '*print*'。
  2. 不等于;StartType 只描述启动方式,当前状态看 Status。
  3. 用 -RequiredServices 查看依赖并逐个检查状态;启动失败还可能是账户、路径或超时,需要看事件日志。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令