Saya perlu menjalankan skrip PowerShell dari dalam C #. Skrip membutuhkan argumen baris perintah.
Inilah yang telah saya lakukan sejauh ini:
RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create();
Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration);
runspace.Open();
RunspaceInvoke scriptInvoker = new RunspaceInvoke(runspace);
Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.Add(scriptFile);
// Execute PowerShell script
results = pipeline.Invoke();
scriptFile berisi sesuatu seperti "C: \ Program Files \ MyProgram \ What's.ps1".
Skrip menggunakan argumen baris perintah seperti "-key Value" sedangkan Value bisa berupa jalur yang juga mungkin berisi spasi.
Saya tidak mendapatkan ini untuk bekerja. Adakah yang tahu cara meneruskan argumen baris perintah ke skrip PowerShell dari dalam C # dan memastikan bahwa spasi tidak menjadi masalah?
c#
command-line
powershell
scripting
arguments
Mephisztoe
sumber
sumber
Command myCommand = new Command(scriptfile);
dan kemudianpipeline.Commands.Add(myCommand);
menyelesaikan masalah pelarian.Jawaban:
Coba buat scriptfile sebagai perintah terpisah:
lalu Anda dapat menambahkan parameter dengan
dan akhirnya
Ini kode lengkap yang diedit:
sumber
Saya punya solusi lain. Saya hanya ingin menguji apakah menjalankan skrip PowerShell berhasil, karena mungkin seseorang mungkin mengubah kebijakan. Sebagai argumennya, saya hanya menentukan path script yang akan dieksekusi.
Dengan isi naskahnya:
sumber
Saya mengalami masalah saat mengirimkan parameter ke metode Commands.AddScript.
Saya menyelesaikan ini dengan mengirimkan
null
nama dan param sebagai nilai ke dalam kumpulanCommandParameters
Inilah fungsi saya:
sumber
using (Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration))...using (Pipeline pipeline = runspace.CreatePipeline())
Anda juga dapat menggunakan pipeline dengan Metode AddScript:
Ini akan mengambil string, dan parameter apa pun yang Anda berikan.
sumber
Milik saya sedikit lebih kecil dan sederhana:
sumber
Berikut adalah cara untuk menambahkan Parameter ke skrip jika Anda menggunakan
Ini dengan menggunakan HashMap sebagai parameter kunci menjadi nama variabel dalam skrip dan nilainya adalah nilai variabel.
Dan metode variabel isi adalah:
dengan cara ini Anda dapat dengan mudah menambahkan beberapa parameter ke skrip. Saya juga memperhatikan bahwa jika Anda ingin mendapatkan nilai dari variabel di skrip Anda seperti ini:
// hasilnya adalah nama v
Anda harus melakukannya seperti yang saya tunjukkan karena untuk beberapa alasan jika Anda melakukannya dengan cara Kosi2801 menyarankan daftar variabel skrip tidak diisi dengan variabel Anda sendiri.
sumber
Bagi saya, cara paling fleksibel untuk menjalankan skrip PowerShell dari C # adalah menggunakan
PowerShell.Create().AddScript()
Potongan kodenya adalah
Anda dapat memeriksa apakah ada kesalahan dengan memeriksa Streams.Error. Sangat berguna untuk memeriksa koleksinya. Pengguna adalah tipe objek yang dikembalikan skrip PowerShell.
sumber