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

Linda Hamilton
Linda Hamiltonasal
2025-01-23 23:11:22393semak imbas

How to Pass Command-Line Arguments with Spaces to a PowerShell Script from 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:

  1. Penciptaan Perintah: Mulakan objek Command, menunjuk ke laluan skrip PowerShell anda.

    <code class="language-csharp">Command myCommand = new Command(scriptfile);</code>
  2. 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>
  3. Tambahan Parameter: Tambahkan CommandParameter objek pada koleksi Command objek Parameters.

    <code class="language-csharp">myCommand.Parameters.Add(param1);
    myCommand.Parameters.Add(param2);</code>
  4. 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!

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