LINUX.ORG.RU

Ansible winrm не удаляет программу на Windows 10

 , ,


0

2

Всем привет! Пытаюсь уже два дня разобраться с удалением ПО на Windows 10 через Ansible. Попробовал два способа, но к сожалению пока ни один не работает.

1 способ через win_package

- name: Uninstall roschat
  win_package:
    path: "C:\\Program Files\\roschat\\Uninstall РосЧат.exe"
    product_id: "56e2ec90-1579-5edf-8225-77cb72eed1a1"
    arguments: /allusers /S
    state: absent

Вывод ansible

TASK [Uninstall roschat] ****************************************************************************************************************************************************
task path: /etc/ansible/windows/playbooks/windows.yml:18
Using module file /usr/lib/python2.7/dist-packages/ansible/modules/windows/win_package.ps1
Pipelining is enabled.
<10.10.225.189> ESTABLISH WINRM CONNECTION FOR USER: bezpa on PORT 5986 TO 10.10.225.189
EXEC (via pipeline wrapper)
changed: [10.10.225.189] => {
    "changed": true,
    "rc": 0,
    "reboot_required": false
}
META: ran handlers
META: ran handlers

PLAY RECAP ******************************************************************************************************************************************************************
10.10.225.189              : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Программа не удаляется. Однако 7-Zip прекрасно удаляется таким способом.

2 Способ через запуск PowerShell команды

Предварительно отключил на Windows UAC, чтобы не запрашивало подтверждение на удаление

Проверил команду на Windows, программа после выполнения удаляется

- name: Uninstall roschat
  win_shell: Start-Process -NoNewWindow -FilePath "C:\Program Files\roschat\Uninstall РосЧат.exe" -ArgumentList '/Queit /allusers /S /All'

Вывод ansible

TASK [Uninstall roschat] ****************************************************************************************************************************************************
task path: /etc/ansible/windows/playbooks/windows.yml:18
Using module file /usr/lib/python2.7/dist-packages/ansible/modules/windows/win_shell.ps1
Pipelining is enabled.
<10.10.225.189> ESTABLISH WINRM CONNECTION FOR USER: bezpa on PORT 5986 TO 10.10.225.189
EXEC (via pipeline wrapper)
changed: [10.10.225.189] => {
    "changed": true,
    "cmd": "Start-Process -NoNewWindow -FilePath \"C:\\Program Files\\roschat\\Uninstall РосЧат.exe\" -ArgumentList '/Queit /allusers /S /All'",
    "delta": "0:00:00.686407",
    "end": "2020-06-02 11:03:29.466824",
    "rc": 0,
    "start": "2020-06-02 11:03:28.780416",
    "stderr": "",
    "stderr_lines": [],
    "stdout": "",
    "stdout_lines": []
}
META: ran handlers
META: ran handlers

PLAY RECAP ******************************************************************************************************************************************************************
10.10.225.189              : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Программа также, как и в первом случае не удаляется. И опять же, если прописать путь до 7-Zip, то архиватор прекрасно удаляется.

Второй день пытаюсь удалить. Думал дело в русских буквах, переименовывал на Uninstall.exe, но это также не помогает. Может кто сталкивался с такой проблемой? Как решили или не решили её?

Удалить папку с софтом, подчистить реестр и прочие остаточные файлы. Теперь последуйте в http://winfaq.com.ru/ пожалуйста.

xDShot ★★★★★
()

Ну наверно сначала надо добиться нормального удавления через PowerShell без всяких ансиблов

fornlr ★★★★★
()

Start-Process -Wait
или так
prog.exe | Out-Null

bass ★★★★★
()
Последнее исправление: bass (всего исправлений: 1)

После 2 дней гугления решил таки проблему. Итоговый playbook. Дело похоже было в правах на удаление и установку

---

- name: Update windows x64 client
  hosts: windows
  tasks:
     - name: Create temp directory
       win_file:
         path: d:\roschat
         state: directory

     - name: Get exe file from ftp
       win_get_url:
         url: ftp://10.10.199.31/releases/RosChat/client/roschat-client/01.06.2020_10%3A27_0.1-1143/windows/x64/roschat-0.1.1143.x64.exe
         dest: d:\roschat

     - name: Update roschat client
       win_shell: |
         If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))

         {
           $arguments = "& '" + $myinvocation.mycommand.definition + "'"
           Start-Process powershell -Verb runAs -ArgumentList $arguments
           Break
         }
         $roschat  = Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*' | Get-ItemProperty | Where-Object {$_.DisplayName -match "РосЧат" } | Select-Object -Property UninstallString
         foreach($patch in $roschat){ $patch = $patch.UninstallString.Replace('{',' ').Replace('}',' ').Replace('/allusers','') }
         if($patch){
          Start-Process -NoNewWindow -FilePath $patch -ArgumentList '/Queit /allusers /S /All'
         }
         Start-Process -NoNewWindow -FilePath 'D:\roschat\roschat-*.x64.exe' -ArgumentList '/Queit /S'

     - name: Delete temp directory
       win_file:
         path: d:\roschat
         state: absent
pbezpal
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.