首頁 >後端開發 >C++ >如何從 C# 將帶空格的命令列參數傳遞給 PowerShell 腳本?

如何從 C# 將帶空格的命令列參數傳遞給 PowerShell 腳本?

DDD
DDD原創
2025-01-23 23:06:12331瀏覽

How to Pass Command-Line Arguments with Spaces to PowerShell Scripts from C#?

將 PowerShell 腳本整合到 C# 應用程式中可提供強大的自動化功能。 但是,處理包含空格的命令列參數可能很棘手。本文示範了一種從 C# 執行 PowerShell 腳本的可靠方法,可靠地傳遞帶有嵌入空格的參數。

當存在空格時,直接傳遞參數的常見方法通常會失敗。 解決方案在於使用 PowerShell CommandCommandParameter 物件來正確管理參數建構。

這是一種使用參數(甚至包含空格)從 C# 執行 PowerShell 腳本的改進方法:

  1. 實例化 PowerShell Runspace: 建立一個 Runspace 來管理 PowerShell 執行環境。
  2. 建構指令: 建立一個 Command 對象,指定 PowerShell 腳本的路徑。
  3. 新增參數: 使用 CommandParameter 物件新增參數。這可以正確處理空格和特殊字元。 每個 CommandParameter 都採用參數名稱及其值。
  4. 加入管道:Command 物件加入 Pipeline
  5. 呼叫管道:執行管道,啟動PowerShell腳本執行。

這是反映這些步驟的改進程式碼範例:

<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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn