Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Meluluskan Argumen Baris Perintah dengan Ruang kepada Skrip PowerShell daripada C#?
Melalukan Argumen Baris Perintah Berjarak kepada Skrip PowerShell daripada C#
Panduan ini menangani cabaran melaksanakan skrip PowerShell daripada aplikasi C#, khususnya mengendalikan hujah baris perintah yang mengandungi ruang.
Masalahnya: Mengirim hujah secara langsung dengan ruang selalunya membawa kepada ralat apabila menggunakan skrip PowerShell daripada C#.
Penyelesaian: Kuncinya ialah merangkum hujah dengan betul dalam proses pelaksanaan arahan. Contoh ini menunjukkan kaedah yang mantap menggunakan ruang nama System.Management.Automation
:
Penciptaan Perintah: Mulakan objek Command
, menunjuk ke laluan skrip PowerShell anda.
<code class="language-csharp">Command myCommand = new Command(scriptfile);</code>
Definisi Parameter: Takrifkan setiap hujah baris arahan sebagai objek CommandParameter
. Yang penting, pastikan hujah dengan ruang dikendalikan dengan betul. Ini biasanya dilakukan dengan melampirkannya dalam petikan berganda.
<code class="language-csharp">CommandParameter param1 = new CommandParameter("arg1", "value1"); CommandParameter param2 = new CommandParameter("arg2", "\"value with spaces\""); // Note the double quotes</code>
Tambahan Parameter: Tambahkan CommandParameter
objek pada koleksi Command
objek Parameters
.
<code class="language-csharp">myCommand.Parameters.Add(param1); myCommand.Parameters.Add(param2);</code>
Pelaksanaan Saluran Paip: Sepadukan Command
ke dalam saluran paip PowerShell dan laksanakannya.
<code class="language-csharp">RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create(); Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration); runspace.Open(); Pipeline pipeline = runspace.CreatePipeline(); pipeline.Commands.Add(myCommand); Collection<PSObject> results = pipeline.Invoke(); runspace.Close();</code>
Contoh Lengkap:
Coretan kod lengkap ini menunjukkan cara melaksanakan skrip PowerShell dengan argumen jarak:
<code class="language-csharp">string scriptfile = @"C:\path\to\your\script.ps1"; // Replace with your script path string arg1 = "value1"; string arg2 = "value with spaces"; RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create(); Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration); runspace.Open(); Pipeline pipeline = runspace.CreatePipeline(); Command myCommand = new Command(scriptfile); myCommand.Parameters.Add(new CommandParameter("arg1", arg1)); myCommand.Parameters.Add(new CommandParameter("arg2", "\"" + arg2 + "\"")); //Escape spaces Collection<PSObject> results = pipeline.Invoke(); runspace.Close(); // Process the results foreach (PSObject result in results) { Console.WriteLine(result.BaseObject); }</code>
Ingat untuk menggantikan "C:pathtoyourscript.ps1"
dengan laluan sebenar ke skrip PowerShell anda. Penyelesaian yang dipertingkat ini memastikan pelaksanaan yang boleh dipercayai walaupun semasa menangani hujah yang mengandungi ruang.
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!