- name: Download PSTools win_get_url: url: https://download.sysinternals.com/files/PSTools.zip dest: C:\Windows\Temp\PSTools.zip force: no - name: Create sysinternals directory win_file: path: C:\Windows\Temp\sysinternals state: directory - name: Unzip PSTools win_unzip: src: C:\Windows\Temp\PSTools.zip dest: C:\Windows\Temp\sysinternals - name: Add sysinternals to PATH win_path: name: PATH elements: C:\Windows\Temp\sysinternals scope: machine state: present - name: Run whoami win_psexec: command: whoami.exe nobanner: true register: whoami - name: Test whoami assert: that: - whoami.rc == 0 - whoami.stdout == '' # FIXME: Standard output does not work or is truncated #- whoami.stdout == '{{ ansible_hostname|lower }}' - name: Run whoami as SYSTEM win_psexec: command: whoami.exe system: yes nobanner: true register: whoami_as_system # Seems to be a bug with PsExec where the stdout can be empty, just retry the task to make this test a bit more stable until: whoami_as_system.rc == 0 and whoami_as_system.stdout == 'nt authority\system' retries: 3 delay: 2 # FIXME: Behaviour is not consistent on all Windows systems #- name: Run whoami as ELEVATED # win_psexec: # command: whoami.exe # elevated: yes # register: whoami_as_elevated # ## Ensure we have basic facts #- setup: # #- debug: # msg: '{{ whoami_as_elevated.stdout|lower }} == {{ ansible_hostname|lower }}\{{ ansible_user_id|lower }}' # #- name: Test whoami # assert: # that: # - whoami_as_elevated.rc == 0 # - whoami_as_elevated.stdout|lower == '{{ ansible_hostname|lower }}\{{ ansible_user_id|lower }}' - name: Run command with multiple arguments win_psexec: command: powershell.exe -NonInteractive "exit 1" ignore_errors: yes register: whoami_multiple_args - name: Test command with multiple argumetns assert: that: - whoami_multiple_args.rc == 1 - whoami_multiple_args.psexec_command == "psexec.exe -accepteula powershell.exe -NonInteractive \"exit 1\"" - name: Remove sysinternals from PATH win_path: name: PATH elements: C:\Windows\Temp\sysinternals scope: machine state: absent - name: Remove sysinternals directory win_file: path: C:\Windows\Temp\sysinternals state: absent - name: Remove sysinternals directory win_file: path: C:\Windows\Temp\PSTools.zip state: absent