Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Meluluskan Argumen Baris Perintah dengan Ruang kepada Skrip PowerShell daripada C#?

Bagaimana untuk Meluluskan Argumen Baris Perintah dengan Ruang kepada Skrip PowerShell daripada C#?

DDD
DDDasal
2025-01-23 23:06:12325semak imbas

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

Mengintegrasikan skrip PowerShell ke dalam aplikasi C# menyediakan keupayaan automasi yang berkuasa. Walau bagaimanapun, mengendalikan hujah baris arahan yang mengandungi ruang boleh menjadi rumit. Artikel ini menunjukkan kaedah yang teguh untuk melaksanakan skrip PowerShell daripada C#, dengan pasti menghantar argumen dengan ruang terbenam.

Pendekatan biasa untuk meneruskan hujah secara terus sering gagal apabila terdapat ruang. Penyelesaiannya terletak pada menggunakan objek PowerShell Command dan CommandParameter untuk mengurus pembinaan hujah dengan betul.

Berikut ialah pendekatan yang diperhalusi untuk melaksanakan skrip PowerShell daripada C# dengan argumen, walaupun yang mengandungi ruang:

  1. Segera PowerShell Runspace: Cipta Runspace untuk mengurus persekitaran pelaksanaan PowerShell.
  2. Bina Perintah: Cipta objek Command yang menyatakan laluan ke skrip PowerShell anda.
  3. Tambah Parameter: Gunakan objek CommandParameter untuk menambah hujah. Ini mengendalikan ruang dan aksara khas dengan betul. Setiap CommandParameter mengambil nama hujah dan nilainya.
  4. Tambah pada Saluran Paip: Tambahkan objek Command pada Pipeline.
  5. Panggil Talian Paip: Laksanakan saluran paip, mulakan pelaksanaan skrip PowerShell.

Berikut ialah contoh kod yang dipertingkatkan yang menggambarkan langkah-langkah ini:

<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>

Pendekatan ini memastikan hujah baris perintah, tidak kira sama ada mengandungi ruang, dihantar dengan betul ke skrip PowerShell anda, membolehkan penyepaduan lancar antara C# dan PowerShell. Ingat untuk menggantikan "path/to/your/script.ps1" dengan laluan sebenar ke skrip anda.

Atas ialah kandungan terperinci Bagaimana untuk Meluluskan Argumen Baris Perintah dengan Ruang kepada Skrip PowerShell daripada C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn