Azure Pipeline重新部署Windows服务:仅在运行时停止服务
解决Windows服务启停的状态判断问题
仅在服务运行时执行停止操作
CMD 命令实现
sc query "你的服务名称" | findstr /i "RUNNING" if %errorlevel% equ 0 ( sc stop "你的服务名称" timeout /t 10 /nobreak >nul )
- 先查询服务状态,通过
findstr过滤出RUNNING状态,若找到则执行停止命令 timeout命令用于等待服务完全停止,可根据实际情况调整超时时间(单位:秒)
PowerShell 命令实现
$service = Get-Service -Name "你的服务名称" if ($service.Status -eq 'Running') { $service | Stop-Service -Force -Wait }
-Force参数强制停止依赖该服务的其他进程(按需使用)-Wait参数会等待服务完全停止后再继续执行后续步骤
仅在服务停止时执行启动操作
CMD 命令实现
sc query "你的服务名称" | findstr /i "STOPPED" if %errorlevel% equ 0 ( sc start "你的服务名称" timeout /t 5 /nobreak >nul )
- 过滤服务的
STOPPED状态,确认服务已停止后执行启动命令 - 可调整
timeout时间确保服务启动完成
PowerShell 命令实现
$service = Get-Service -Name "你的服务名称" if ($service.Status -eq 'Stopped') { $service | Start-Service -Wait }
-Wait参数等待服务启动至运行状态后再继续后续流程
DevOps 管道配置提示
在Azure DevOps发布管道中,添加Command Line或PowerShell任务,将上述命令填入脚本框,替换你的服务名称为实际Windows服务名称即可。
内容的提问来源于stack exchange,提问作者SpaceFlex
相关产品推荐
相关产品推荐

