diff --git a/changelogs/fragments/win_file-paths.yaml b/changelogs/fragments/win_file-paths.yaml new file mode 100644 index 0000000000..bf260f0b94 --- /dev/null +++ b/changelogs/fragments/win_file-paths.yaml @@ -0,0 +1,2 @@ +bugfixes: +- win_file - Fix issues when using paths with glob like characters, e.g. ``[``, ``]`` diff --git a/lib/ansible/modules/windows/win_file.ps1 b/lib/ansible/modules/windows/win_file.ps1 index e76f96410b..8e42e55399 100644 --- a/lib/ansible/modules/windows/win_file.ps1 +++ b/lib/ansible/modules/windows/win_file.ps1 @@ -17,7 +17,7 @@ $state = Get-AnsibleParam -obj $params -name "state" -type "str" -validateset "a # used in template/copy when dest is the path to a dir and source is a file $original_basename = Get-AnsibleParam -obj $params -name "_original_basename" -type "str" -if ((Test-Path -Path $path -PathType Container) -and ($null -ne $original_basename)) { +if ((Test-Path -LiteralPath $path -PathType Container) -and ($null -ne $original_basename)) { $path = Join-Path -Path $path -ChildPath $original_basename } @@ -82,7 +82,7 @@ function Remove-File($file, $checkmode) { } function Remove-Directory($directory, $checkmode) { - foreach ($file in Get-ChildItem $directory.FullName) { + foreach ($file in Get-ChildItem -LiteralPath $directory.FullName) { Remove-File -file $file -checkmode $checkmode } Remove-Item -LiteralPath $directory.FullName -Force -Recurse -WhatIf:$checkmode