首页 > 解决方案 > win_shell 完成命令但未结束进程

问题描述

我正在学习 Ansible 并且遇到了一些我在任何地方都没有看到好的参考的东西 -

我的目标机器上有一个 .ps1,我想通过 Ansible 运行它,同时也将它传递给一个变量。我的剧本很简单:

---
- name: run stuff
  hosts: all
  gather_facts: no
  vars:
    force_all_hosts: false
  tasks:

  - name: run mounter script
    win_shell: C:\folder\file.ps1 -password (ConvertTo-SecureString "{{vault_pw}}" -AsPlainText -Force)

当我在 Windows 机器本地手动运行 .ps1 的内容时,它们的内容有效,因此我知道实际的命令有效。当我运行剧本时,它也能正常工作——Powershell 脚本成功运行并进行了更改——但实际任务从未完成,因此剧本无法完成。

我在 win_shell 行的末尾添加了一个“< NUL”以强制显示一条消息,指出返回码不是 0 - RC 是 1 - 但后来我将 Ansible 更新为 2.8,现在保留了“<”字符,所以我不能再重新创建返回码失败了。

有没有办法强制返回代码,并过滤它是否为 <= 2 或其他东西?或者更好的是,除了使用异步/轮询之外,还有其他方法可以确保作业结束,因为这会导致播放报告失败?

标签: powershellansible

解决方案


您可以尝试 ansible 中的异步选项吗? https://docs.ansible.com/ansible/latest/user_guide/playbooks_async.html


推荐阅读