將 PowerShell 腳本整合到 C# 應用程式中可提供強大的自動化功能。 但是,處理包含空格的命令列參數可能很棘手。本文示範了一種從 C# 執行 PowerShell 腳本的可靠方法,可靠地傳遞帶有嵌入空格的參數。
當存在空格時,直接傳遞參數的常見方法通常會失敗。 解決方案在於使用 PowerShell Command
和 CommandParameter
物件來正確管理參數建構。
這是一種使用參數(甚至包含空格)從 C# 執行 PowerShell 腳本的改進方法:
Runspace
來管理 PowerShell 執行環境。 Command
對象,指定 PowerShell 腳本的路徑。 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中文網其他相關文章!