PowerShell スクリプトを実行する機能を C# アプリケーションに統合すると、多くの利点がもたらされます。ただし、この機能を最大限に活用するには、C# コードでコマンド ライン パラメーターを PowerShell スクリプトに渡す方法を理解することが重要です。このガイドでは、この一般的なシナリオを検討し、PowerShell スクリプトとパラメーターのシームレスな実行を実現するための包括的なソリューションを提供します。
C# から PowerShell スクリプトを実行するには、次のコード テンプレートを使用できます:
<code class="language-csharp">RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create(); Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration); runspace.Open(); RunspaceInvoke scriptInvoker = new RunspaceInvoke(runspace); Pipeline pipeline = runspace.CreatePipeline(); pipeline.Commands.Add(scriptFile); results = pipeline.Invoke();</code>
このコードでは、scriptFile
は PowerShell スクリプトへのパス (たとえば、「C:Program FilesMyProgramWhatever.ps1」) を表します。スクリプトで「-key Value」形式 (Value にはスペースを含めることができます) のコマンド ライン引数を使用する場合、これらの引数を効果的に渡すことが困難になる可能性があります。
この問題を解決するには、スクリプト ファイル用に別のコマンド オブジェクトを構築し、CommandParameter
オブジェクトを使用してパラメーターを指定する必要があります。
<code class="language-csharp">Command myCommand = new Command(scriptfile); CommandParameter testParam = new CommandParameter("key", "value"); myCommand.Parameters.Add(testParam); pipeline.Commands.Add(myCommand);</code>
このメソッドにより、スペースを含む引数を含むコマンドライン引数が正しく処理されます。
要約すると、解決策を含む完全に変更されたコードは次のとおりです。
<code class="language-csharp">RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create(); Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration); runspace.Open(); Pipeline pipeline = runspace.CreatePipeline(); // 使用参数构建单独的命令 Command myCommand = new Command(scriptfile); CommandParameter testParam = new CommandParameter("key", "value"); myCommand.Parameters.Add(testParam); pipeline.Commands.Add(myCommand); results = pipeline.Invoke();</code>
このソリューションを C# コードに統合すると、引数にスペースが含まれている場合でも、自信を持って PowerShell スクリプトを実行し、コマンド ライン引数を渡すことができます。この強化された機能により、PowerShell スクリプトを C# アプリケーションにシームレスに統合できるようになります。
以上がC# から PowerShell スクリプトにコマンド ライン引数を渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。