1

System.Diagnostics.Process を使用して PowerShell スクリプトを実行することにしたのは、単純に思えたからです。結果の出力は気にしませんでした。ユーザーが実行中のものを確認できるようにしたかったのです。

Process process = new Process();

Process.StartInfo.FileName = "powershell.exe"
Process.StartInfo.Arguments = String.Format("-executionpolicy unrestricted -noexit \"{0}\" -XmlConfigFile {1}",scriptname, configFile);
process.Start();

これを実行すると、スクリプトは引数を認識しません。noexit により、最後に $args と $MyInvocation をテストできます。引数はありません。cmd.exe で実行すると動作します。{1} を省略した場合、-XmlConfigFile に引数がないというエラーが表示されます。

編集: powershell に 4.0 の使用を強制し、$psboundparameters に引数を含まない引数のみを渡すことに対処するために、ネストされた powershell セッションを実行していたのは私のせいでした。

4

1 に答える 1

1

私にとってはうまくいくので、これを試してください:

Process.StartInfo.Arguments = String.Format("-executionpolicy unrestricted 
-noexit -file \"{0}\" -XmlConfigFile {1}",scriptname, configFile);

-XmlConfigFile が何をするのかわかりませんが。有効な引数ではないようです: http://technet.microsoft.com/en-us/library/hh847736.aspx

したがって、最初から削除することができます。

于 2012-11-25T12:03:27.623 に答える