首页 > 解决方案 > Cmd 脚本返回一个非零代码,ansible 得到一个零代码

问题描述

我在服务器上运行 .bat 脚本,它只是检查服务是否正在运行,如下所示:

nssm.exe start MyService
for /F "tokens=3 delims=: " %%H in ('sc query "MyService" ^| findstr "STATE"') do (
  if /I "%%H" NEQ "RUNNING" (
      exit /b 1
  ) else (
      exit /b 0
  )
)

这个 .bat 文件由这个 ansible 调用:

- name: Start service
  win_command: StartService.bat
  args:
     chdir: "C:\temp"
  register: result
  failed_when: result.rc != 0

但无论失败还是成功,我总是得到一个 0 错误代码。如果我手动运行脚本,并检查%errorlevel%它总是显示正确的..

标签: batch-filecmdansible

解决方案


已经去这个版本:

nssm.exe start MyService
sc query "MyService" | findstr /I "RUNNING"
exit /b %errorlevel%

推荐阅读