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. -InputFormatText または 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 に答える