2

在 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.
4

2 回答 2

4

几点注意事项:

  1. 你不需要cmd。只需直接调用 PowerShell。
  2. -InputFormat可以是文本或 XML。None此处不是有效值。
  3. 使用以下内容(如果出现转义问题,帮助中也会提到):

    powershell "&{ &'D:\test_powershell\app\test_wrapper.ps1' 'test 1 | test2' }"
    
于 2012-07-20T23:53:00.927 回答
3

从 cmd 管道的转义字符将是克拉 ^

于 2012-07-21T15:42:25.543 回答