C# 内から PowerShell スクリプトを実行する必要があります。スクリプトにはコマンドライン引数が必要です。
これまで私がやってきたことは次のとおりです:
RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create();
Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration);
runspace.Open();
RunspaceInvoke scriptInvoker = new RunspaceInvoke(runspace);
Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.Add(scriptFile);
// Execute PowerShell script
results = pipeline.Invoke();
scriptFile には「C:\Program Files\MyProgram\Whatever.ps1」のようなものが含まれています。
スクリプトは「-key Value」などのコマンドライン引数を使用しますが、Value はスペースを含む可能性のあるパスのようなものにすることができます。
うまく動作しません。C# 内から PowerShell スクリプトにコマンドライン引数を渡し、スペースが問題にならないようにする方法を知っている人はいますか?
ベストアンサー1
スクリプトファイルを別のコマンドとして作成してみます:
Command myCommand = new Command(scriptfile);
次にパラメータを追加します
CommandParameter testParam = new CommandParameter("key","value");
myCommand.Parameters.Add(testParam);
そして最後に
pipeline.Commands.Add(myCommand);
編集された完全なコードは次のとおりです。
RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create();
Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration);
runspace.Open();
Pipeline pipeline = runspace.CreatePipeline();
//Here's how you add a new script with arguments
Command myCommand = new Command(scriptfile);
CommandParameter testParam = new CommandParameter("key","value");
myCommand.Parameters.Add(testParam);
pipeline.Commands.Add(myCommand);
// Execute PowerShell script
results = pipeline.Invoke();