Ansible-Problem beim Starten einer EXE über win_command

Ansible-Problem beim Starten einer EXE über win_command

Ich schreibe derzeit ein Playbook zur Deinstallation des Fusion Inventory Agent und zur anschließenden Bereitstellung des GLPI-Agenten 1.4 auf Windows Server 2016-2022. Für alle unten beschriebenen Tests verwende ich mein Domänenkonto, das über Administratorrechte auf allen Servern verfügt.

(Ich verwende Ansible Core 2.12.10 + Python 3.9.2 auf einem frisch aktualisierten Debian 11)

  • Der Registrierungspfad des Deinstallationsprogramms für den Fusion Inventory Agent befindet sich unter . "C:\Program Files\FusionInventory-Agent\Uninstall.exe"Wenn ich ihn also manuell über cmd/PowerShell mit /Sder Option ausführe, erhalte ich ein Ja/Nein-UAC-Popup und deinstalliere den Agenten, wenn ich auf „Ja“ drücke.

  • Wenn ich jetzt mit der rechten Maustaste klicke und meine cmd/powershell.exe als Administrator ausführe, kann ich sie "C:\Program Files\FusionInventory-Agent\Uninstall.exe /S"problemlos ohne UAC starten, das ist normal.

Aus Ansible-Sicht, wenn ich die folgende Aufgabe verwende:

  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

Es geht so:

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": []
}

ABER es deinstalliert tatsächlich nichts. Es scheint, dass Ansible den Befehl erfolgreich startet, aber das Ergebnis nicht abfängt.

Ich habe auch verschiedene Dinge ausprobiert, um zu prüfen, ob sich etwas ändert (powershell.exe innerhalb von cmd starten, von psexec aus …), aber die Ergebnisse schlagen fehl oder „ändern sich“, aber uninstall.exe wird nicht wie vorgesehen gestartet.

Wie handhabt man diese Art der Deinstallation aus Ansible-Sicht?

Beste grüße

Gael

Antwort1

Schließlich bin ich zu einer anderen Lösung gekommen: Ich habe einfach eine geplante Windows-Aufgabe erstellt (immer noch mit Ansible), um das Deinstallationsprogramm und die benötigte Option zu starten, dann einen Benutzernamen angegeben, es ausgelöst und einmal ausgeführt.

Es ist ein Bypass, funktioniert aber ziemlich gut

verwandte Informationen