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 セッションを実行していたのは私のせいでした。