1. ホーム
  2. c#

[解決済み] C#からコマンドライン引数でPowerShellスクリプトを実行する

2022-09-23 03:49:19

質問

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:DecimalProgram FilesMyProgramWhatever.ps1"のようなものが含まれています。

スクリプトは "-key Value" のようなコマンドライン引数を使用しますが、Value にはスペースを含むパスのようなものを指定できます。

これがうまくいきません。C# 内から PowerShell スクリプトにコマンドライン引数を渡し、スペースが問題ないことを確認する方法をご存知の方はいらっしゃいますか?

どのように解決するのですか?

scriptfileを別コマンドで作成してみてください。

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