透過 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 似乎成功啟動了命令,但沒有捕獲結果。

我還嘗試了不同的方法來檢查它是否更改了某些內容(從psexec 在cmd 中啟動powershell.exe ...),但結果失敗或“更改”,但它沒有按應有的方式啟動uninstall. exe。

從 Ansible 的角度來看,如何處理這種卸載?

此致

蓋爾人

答案1

最後我得到了一個不同的解決方案:剛剛建立了一個Windows排程任務(仍然使用ansible)來啟動我需要的卸載程式和選項,然後指定一個用戶名,觸發器並運行一次。

這是一個旁路,但效果很好

相關內容