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:
Runspace
untuk mengurus persekitaran pelaksanaan PowerShell.Command
yang menyatakan laluan ke skrip PowerShell anda.CommandParameter
untuk menambah hujah. Ini mengendalikan ruang dan aksara khas dengan betul. Setiap CommandParameter
mengambil nama hujah dan nilainya.Command
pada Pipeline
.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!