在powershell中逃避字符只是愚蠢的。我已经尝试了所有我能找到的尝试在我传入PowerShell脚本的参数中逃避此管道,但我绝对无法逃脱它。这很坚果。我确保用单引号传递参数,并尝试了所有的powershell / windows转义字符(`,``,\,\,^,^^)。非常感谢任何帮助。
测试脚本示例:
$cmd = $Args[0] #set first parameter received to $cmd to run with Invoke-Expression (must wrap param in single quotes if it contains spaces)
write-host $cmd
使用包含命令的管道调用测试脚本:
C:\Windows\System32\cmd.exe /c powershell -executionPolicy Unrestricted -InputFormat none "D:\test_powershell\app\test_wrapper.ps1" 'test1 | test2'
结果:
'test2'' is not recognized as an internal or external command,
operable program or batch file.
答案 0 :(得分:4)
一些注意事项:
cmd
。只需直接调用PowerShell即可。-InputFormat
可以是Text或XML。 None
此处不是有效值。使用以下内容(如果出现转义问题,也会在帮助中提及):
powershell "&{ &'D:\test_powershell\app\test_wrapper.ps1' 'test 1 | test2' }"
答案 1 :(得分:3)
管道的转义字符将是carat ^