在 C# 應用程式中整合執行 PowerShell 腳本功能,可以帶來許多優勢。然而,要充分利用此功能,請務必了解如何在 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中文網其他相關文章!