batch-file - 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%
它总是显示正确的..
解决方案
已经去这个版本:
nssm.exe start MyService
sc query "MyService" | findstr /I "RUNNING"
exit /b %errorlevel%
推荐阅读
- reactjs - 反应本机选择器值未正确更新
- java - 从 maven 项目中的 application.properties 中删除未使用的属性。如何验证删除的属性是未使用的
- ruby-on-rails - Webpacker 在 /app/public/packs/manifest.json 中找不到 application.css
- amazon-web-services - 将数据从 dynamodb 发送到 s3 时,AWS Glue 作业书签不起作用
- java - 带有 Java 驱动程序的 MongodDB:如何查找嵌套属性以及如何使用“和”运算符
- php - 验证访问令牌并将下载重定向到另一台服务器
- java - 在 Avro 中提供 Enum 演化向后兼容性的任何选项?
- python - 如何将列表元素中的参数提供给类?
- assembly - 逆向汇编简码结构问题
- swift - 如何在 macOS 上使用 SwiftUI 2 禁用全屏按钮