当您在powershell中直接运行ps代码块时,下面的“问题播放”运行得很好。但是,当通过Ansible运行时,它会出现以下情况:
ERROR! failed at splitting arguments, either an unbalanced jinja2 block or quotes: $iExit = 0
运行简单的代码块,没有问题(也包括在下面)
我尝试使用{% raw %}和{% endraw %}在jinja2多行转义中包装该块。但是,错误总是出现在第一行:
ERROR! failed at splitting arguments, either an unbalanced jinja2 block or quotes: {% raw %}
问题玩
tasks:
- name: Purge all rotated logs
win_shell: |
$iExit = 0
Get-ChildItem D:\application*|? {$_.PSIsContainer -eq $true}|% {
Get-ChildItem log* -Path "$_\logs\" -ErrorAction Stop |? {$_.Name -match "log\d{4}-\d{2}-\d{2}\.\d{2}\.txt"}|% {
Write-Host Removing $_.FullName which is $_.Length Bytes and last written to on $_.LastWriteTime
Try {
Remove-Item $_.FullName -ErrorAction Stop
}
Catch [Exception] {
$iExit = 1
Write-Host "[ERROR removing file: $($_.Exception.Message)]"
}}}
Exit $iExit
无问题游戏
tasks:
- name: Purge all rotated logs
win_shell: |
Get-Childitem log* -Recurse -path D:\logs\ |
Where{$_.Name -match "log\d{4}-\d{2}-\d{2}\.\d{2}\.txt"} |
Foreach-Object {
Write-Host Removing $_.FullName which is $_.Length Bytes and last written to on $_.LastWriteTime
Remove-Item $_.FullName
}
发布于 2019-11-06 19:07:41
看起来问题就在于这一行:
...
Get-ChildItem log* -Path "$_\logs\" -ErrorAction Stop ...
...
具体来说,最后一句话是:
"$_\logs\"
无意中,通过使用尾随斜杠的文件路径,您不小心告诉Ansible用\"
转义最后一个引号,看起来它关闭了字符串,这会导致“不平衡引号”错误。
删除尾随斜杠应该可以解决错误。
https://stackoverflow.com/questions/58734056
复制相似问题