首页/系统/Windows 运维速查/Start/Stop/Restart-Service 控制服务

Start/Stop/Restart-Service 控制服务

PowerShell 控制服务生命周期:-Force 处理依赖服务、-PassThru 拿到结果对象用于确认。

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

服务的启停命令

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

命令与参数

命令或参数作用注意点
启动命令把服务状态置为运行启动失败需结合退出码与日志排查
停止命令把服务状态置为停止有时间限制,超时会报错
重启命令等价于先停后起业务中断窗口要提前评估
强制参数连带处理依赖服务可能中断其它业务
回传参数返回服务对象便于紧接着确认状态
管道输入接收服务对象先查询再操作,可读性更好
启动失败时默认只给出简短提示。要定位原因,需要结合服务退出码与系统日志中的服务控制管理器记录,必要时手工以相同账户运行程序复现问题。
强制参数会连带停止依赖该服务的上层业务,生产环境使用前先用依赖查询确认影响面,并尽量安排在维护窗口内执行。

易错点

  • 不看依赖就使用强制参数:会连带停止上层业务服务,造成超出预期的中断
  • 停止后不验证状态:停服务可能超时报错但实际已停,操作完应立即查询状态确认
  • 以为重启等于重新加载全部配置:部分配置需要重建进程或重启主机才生效,需看应用说明
  • 在无权限会话中操作:会直接报拒绝访问,控制服务需要管理员权限
  • 批量操作不做容错:单个服务失败会中断整批,应逐项处理并收集结果

数据来源与参考

  • Microsoft Learn:Start-Service
  • Microsoft Learn:Restart-Service

相关工具

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