win_psexec: fix arg handling when command contains multiple args (#44797)

(cherry picked from commit 9d91607754)
This commit is contained in:
Jordan Borean 2018-08-29 10:12:29 +10:00 committed by Matt Clay
parent 4e5170fb40
commit c86794ace2
3 changed files with 18 additions and 1 deletions

View file

@ -0,0 +1,2 @@
bugfixes:
- win_psexec - changed code to not escape the command option when building the args - https://github.com/ansible/ansible/issues/43839

View file

@ -106,10 +106,13 @@ If ($extra_opts) {
}
$arguments += "-accepteula"
$arguments += $command
$argument_string = Argv-ToString -arguments $arguments
# add the command at the end of the argument string, we don't want to escape
# that as psexec doesn't expect it to be one arg
$argument_string += " $command"
$start_datetime = [DateTime]::UtcNow
$result.psexec_command = "$executable $argument_string"

View file

@ -67,6 +67,18 @@
# - 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