diff --git a/changelogs/fragments/74723-support-wildcard-win_fetch.yml b/changelogs/fragments/74723-support-wildcard-win_fetch.yml new file mode 100644 index 00000000000..e7942132827 --- /dev/null +++ b/changelogs/fragments/74723-support-wildcard-win_fetch.yml @@ -0,0 +1,3 @@ +bugfixes: +- win_fetch - Add support for using file with wildcards in file name. + (https://github.com/ansible/ansible/issues/73128) diff --git a/lib/ansible/plugins/connection/winrm.py b/lib/ansible/plugins/connection/winrm.py index 2b79dcea810..bfb2182c604 100644 --- a/lib/ansible/plugins/connection/winrm.py +++ b/lib/ansible/plugins/connection/winrm.py @@ -714,7 +714,7 @@ class Connection(ConnectionBase): try: script = ''' $path = '%(path)s' - If (Test-Path -Path $path -PathType Leaf) + If (Test-Path -LiteralPath $path -PathType Leaf) { $buffer_size = %(buffer_size)d $offset = %(offset)d @@ -729,7 +729,7 @@ class Connection(ConnectionBase): } $stream.Close() > $null } - ElseIf (Test-Path -Path $path -PathType Container) + ElseIf (Test-Path -LiteralPath $path -PathType Container) { Write-Host "[DIR]"; } diff --git a/test/integration/targets/win_fetch/tasks/main.yml b/test/integration/targets/win_fetch/tasks/main.yml index 78b6fa02c9b..b0c6cad8be2 100644 --- a/test/integration/targets/win_fetch/tasks/main.yml +++ b/test/integration/targets/win_fetch/tasks/main.yml @@ -210,3 +210,18 @@ - fetch_special_file.checksum == '34d4150adc3347f1dd8ce19fdf65b74d971ab602' - fetch_special_file.dest == host_output_dir + "/abc$not var'quote‘" - fetch_special_file_actual.stdout == 'abc' + +- name: create file with wildcard characters + raw: Set-Content -LiteralPath '{{ remote_tmp_dir }}\abc[].txt' -Value 'abc' + +- name: fetch file with wildcard characters + fetch: + src: '{{ remote_tmp_dir }}\abc[].txt' + dest: '{{ host_output_dir }}/' + register: fetch_wildcard_file_nofail + +- name: assert fetch file with wildcard characters + assert: + that: + - "fetch_wildcard_file_nofail is not failed" +