服务的启停命令
PowerShell 提供了成对的命令来控制服务生命周期:启动、停止与重启。它们的共同特点是可以接收服务对象或名称,能够参与管道,也能用回传参数把操作结果对象返回,便于紧接着确认状态。真正需要小心的是强制参数:它会在停止目标服务时一并停止依赖它的上层服务,在生产环境可能牵连其它业务。稳妥的做法是先查依赖关系,再决定是否使用强制方式。
基本信息
| 适用平台 | Windows PowerShell 5.1 与 PowerShell 7 及以上 |
|---|---|
| 语法 | Start-Service -Name 名称;Stop-Service -Name 名称;Restart-Service -Name 名称 |
| 回传参数 | 加上回传参数后返回服务对象,可继续判断状态 |
| 强制参数 | 停止时连带处理依赖服务,影响范围较大 |
| 管道用法 | 可接收服务对象,常见写法是先查询再操作 |
| 权限 | 控制服务需要管理员权限 |
典型使用场景
- 变更配置后重启服务,让新配置生效
- 服务异常停止后重新启动,并确认状态恢复
- 维护窗口内批量停止一组服务,完成后再启动
- 排查依赖关系:在停止前确认哪些上层服务会受影响
- 部署脚本中按顺序启停服务,保证依赖顺序正确
- 操作后立即验证状态,避免误以为已经生效
常用示例
常用示例
# 停止服务(存在依赖时加强制参数)
Stop-Service -Name Spooler -Force
# 启动并在同一语句里拿到结果对象
Start-Service -Name Spooler -PassThru | Select-Object Name, Status
# 先查询再重启,写法更直观
Get-Service Spooler | Restart-Service -Force
# 批量重启一组服务
'W32Time','Spooler' | ForEach-Object { Restart-Service $_ -Force }
# 操作后验证状态
Start-Service -Name W3SVC
(Get-Service W3SVC).Status
# 查看依赖关系,评估强制停止的影响
Get-Service -Name Spooler -DependentServices -RequiredServices命令与参数
| 命令或参数 | 作用 | 注意点 |
|---|---|---|
| 启动命令 | 把服务状态置为运行 | 启动失败需结合退出码与日志排查 |
| 停止命令 | 把服务状态置为停止 | 有时间限制,超时会报错 |
| 重启命令 | 等价于先停后起 | 业务中断窗口要提前评估 |
| 强制参数 | 连带处理依赖服务 | 可能中断其它业务 |
| 回传参数 | 返回服务对象 | 便于紧接着确认状态 |
| 管道输入 | 接收服务对象 | 先查询再操作,可读性更好 |
启动失败时默认只给出简短提示。要定位原因,需要结合服务退出码与系统日志中的服务控制管理器记录,必要时手工以相同账户运行程序复现问题。
强制参数会连带停止依赖该服务的上层业务,生产环境使用前先用依赖查询确认影响面,并尽量安排在维护窗口内执行。