コマンドライン引数を使用して C# から PowerShell スクリプトを実行する 質問する

コマンドライン引数を使用して C# から PowerShell スクリプトを実行する 質問する

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();

おすすめ記事