Pertanyaan Mengeksekusi file EXE menggunakan skrip PowerShell


Saya mencoba mengeksekusi file EXE menggunakan skrip PowerShell. Jika saya menggunakan baris perintah itu bekerja tanpa masalah (pertama saya berikan nama dari eksekusi dan serangkaian parameter untuk memohonnya):

"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode

Tetapi melakukan hal yang sama di dalam skrip mengembalikan kesalahan:

Syarat '"C: \ Program Files \ Automated   QA \ TestExecute 8 \ Bin \ TestExecute.exe "   C: \ temp \ TestProject1 \ TestProject1.pjs   / run / exit / SilentMode ' tidak   dikenal sebagai nama cmdlet,   fungsi, file skrip, atau dapat dioperasikan   program. Periksa ejaan dari   nama, atau jika jalur disertakan,   verifikasi bahwa jalur sudah benar dan   coba lagi.

(Saya menjalankan perintah menggunakan operator "&".)

Bagaimana saya bisa memperbaiki masalah ini?


76
2018-01-09 15:09


asal


Jawaban:


& "C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode

atau

[System.Diagnostics.Process]::Start("C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe", "C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode")

UPDATE: maaf saya melewatkan "(Saya memanggil perintah menggunakan" & "operator)" kalimat. Saya memiliki masalah ini ketika saya mengevaluasi jalan secara dinamis. Coba konstruksi Ekspresi Invoke:

Invoke-Expression "& `"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe`" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode"

89
2018-01-09 16:05



Sepertinya Anda menetapkan EXE dan argumen pertamanya dalam string tunggal misalnya; '"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode'. Ini tidak akan berhasil. Secara umum Anda memanggil perintah asli yang memiliki ruang di jalurnya seperti:

& "c:\some path with spaces\foo.exe" <arguments go here>

Itu adalah & mengharapkan untuk diikuti oleh string yang mengidentifikasi perintah: cmdlet, fungsi, native exe relative atau absolute path.

Setelah Anda mendapatkan ini bekerja:

& "c:\some path with spaces\foo.exe"

Mulailah bekerja untuk mengutip argumen yang diperlukan. Meskipun terlihat seperti argumen Anda harus baik-baik saja (tidak ada spasi, tidak ada karakter khusus lainnya yang ditafsirkan oleh PowerShell).


23
2018-01-10 04:41