1

--%パラメーターが期待どおりに機能するのに問題があります。私の$TaskParams変数には、'<'powershell によってリダイレクトとして解釈される文字が含まれているため、エスケープする必要があります。

ただし、以下は機能しません。

$CreateTask = Start-Process PowerShell.exe "$ScriptLocation --% $TaskParams" -Wait -PassThru

なしで、手動で文字--%を削除すると、次のように機能します。'<'

$CreateTask = Start-Process PowerShell.exe "$ScriptLocation $TaskParams" -Wait -PassThru

受け取ったエラー:

 Start-Process : A positional parameter cannot be found that accepts argument 
'--%'.

注:PS 5.0を使用しています

--%パラメータを間違って使用していますか? ヘルプやポインタをいただければ幸いです。ありがとう

4

3 に答える 3

4

解析停止記号--%は、実行可能ファイルを直接呼び出すか、呼び出し演算子を使用して呼び出す場合にのみ機能し&ます。PowerShell スクリプト/関数/コマンドレットを呼び出すときは使用しません。

于 2016-09-06T18:16:57.607 に答える
3

本当に使用したい場合はStart-Process、引数をエンコードして、そのまま実行できます。過去のUACを昇格させるとき、私はこれに似たものを使用します:

$Code = ". '$ScriptLocation' $TaskParams"
$Encoded = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($code))

Start-Process PowerShell.exe -ArgumentList "-EncodedCommand",$Encoded -Wait -PassThru

私はそれがあなたが探しているものを達成すると確信しています。

于 2016-09-06T18:53:01.173 に答える