PowerShell スクリプトを C# アプリケーションに統合すると、強力な自動化機能が提供されます。 ただし、スペースを含むコマンドライン引数の処理は難しい場合があります。この記事では、スペースが埋め込まれた引数を確実に渡して、C# から PowerShell スクリプトを実行するための堅牢な方法を示します。
引数を直接渡す一般的なアプローチは、スペースが存在すると失敗することがよくあります。 解決策は、PowerShell の Command
オブジェクトと CommandParameter
オブジェクトを使用して引数の構築を適切に管理することです。
ここでは、スペースを含む引数を使用して C# から PowerShell スクリプトを実行するための洗練されたアプローチを示します。
Runspace
を作成します。Command
オブジェクトを作成します。CommandParameter
オブジェクトを使用して引数を追加します。これにより、スペースと特殊文字が正しく処理されます。 各 CommandParameter
は引数名とその値を受け取ります。Command
オブジェクトを Pipeline
.これらの手順を反映した改良されたコード例を次に示します。
<code class="language-csharp">RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create(); Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration); runspace.Open(); Pipeline pipeline = runspace.CreatePipeline(); // Path to your PowerShell script string scriptFile = "path/to/your/script.ps1"; // Create the Command object Command myCommand = new Command(scriptFile); // Add parameters with spaces handled correctly myCommand.Parameters.Add(new CommandParameter("key1", "value with spaces")); myCommand.Parameters.Add(new CommandParameter("key2", "another value")); // Add the command to the pipeline pipeline.Commands.Add(myCommand); // Invoke the pipeline and handle the results Collection<PSObject> results = pipeline.Invoke(); // Process the results as needed foreach (PSObject result in results) { // ... handle each result ... } runspace.Close();</code>
このアプローチにより、コマンドライン引数にスペースが含まれているかどうかに関係なく、コマンドライン引数が PowerShell スクリプトに正しく渡され、C# と PowerShell 間のシームレスな統合が可能になります。 "path/to/your/script.ps1"
をスクリプトへの実際のパスに置き換えることを忘れないでください。
以上がスペースを含むコマンドライン引数を C# から PowerShell スクリプトに渡す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。