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.