通过 win_command 启动 exe 时出现 Ansible 问题

通过 win_command 启动 exe 时出现 Ansible 问题

我目前正在编写一个关于卸载 Fusion Inventory Agent 然后在 Windows Server 2016-2022 上部署 GLPI 代理 1.4 的剧本。对于下面详述的所有测试,我都使用在任何服务器上都具有管理员权限的域帐户。

(我在刚刚升级的 Debian 11 上运行 ansible core 2.12.10 + python 3.9.2)

  • Fusion Inventory 代理卸载程序注册表路径位于,"C:\Program Files\FusionInventory-Agent\Uninstall.exe"因此如果我从 cmd/powershell 手动运行它,/S我会得到一个“是/否”UAC 弹出窗口,所以如果我按“是”,就会卸载代理。

  • 现在,如果我右键单击我的 cmd/powershell.exe 并以管理员身份运行,我可以"C:\Program Files\FusionInventory-Agent\Uninstall.exe /S"轻松启动而无需 UAC,这是正常的。

从 Ansible 的角度来看,如果我使用以下任务:

  tasks:
  - name: uninstall fusion inventory agent through cmd
    ansible.windows.win_command: '"C:\Program Files\FusionInventory-Agent\Uninstall.exe" "/S"'
    become: yes
    become_user: my_domain_account
    become_method: runas
    register: fusion_agent_out

具体如下:

Using module file /usr/lib/python3/dist-packages/ansible_collections/ansible/windows/plugins/modules/win_command.ps1
Pipelining is enabled.
<frhd01inp009> ESTABLISH WINRM CONNECTION FOR USER: mydomain_account@my_domain on PORT 5985 TO my_server
EXEC (via pipeline wrapper)
changed: [server_name] => {
    "changed": true,
    "cmd": "\"C:\\Program Files\\FusionInventory-Agent\\Uninstall.exe\" \"/S\"",
    "delta": "0:00:00.468425",
    "end": "2022-11-24 16:32:12.065029",
    "rc": 0,
    "start": "2022-11-24 16:32:11.596603",
    "stderr": "",
    "stderr_lines": [],
    "stdout": "",
    "stdout_lines": []
}

但是,它实际上并没有卸载任何东西,似乎 Ansible 成功启动了命令,但没有捕获结果。

我也尝试了不同的方法来检查它是否改变了某些东西(在 cmd 内启动 powershell.exe,从 psexec...)但结果失败或“改变”但它没有按应有的方式启动 uninstall.exe。

从 Ansible 角度来看,如何处理这种卸载?

此致

盖尔

答案1

最后我得到了一个不同的解决方案:只需创建一个 Windows 计划任务(仍然使用 ansible)来启动我需要的卸载程序和选项,然后指定一个用户名,触发并运行它一次。

这是一个绕过方法,但效果很好

相关内容