Saya memiliki skrip PowerShell 1.0 untuk hanya membuka banyak aplikasi. Yang pertama adalah mesin virtual dan yang lainnya adalah aplikasi pengembangan. Saya ingin mesin virtual menyelesaikan booting sebelum sisa aplikasi dibuka.
Dalam bash aku hanya bisa mengatakannya "cmd1 && cmd2"
Inilah yang saya punya ...
C:\Applications\VirtualBox\vboxmanage startvm superdooper
&"C:\Applications\NetBeans 6.5\bin\netbeans.exe"
sumber
| out-null
melakukan apa yang saya butuhkan.Start-Job
Sudah mencoba menggunakan tetapi karena saya melewati hasil fungsi sebagai parameter, itu membuat skitzoid kecil pada saya, jadi saya tidak bisa menggunakan saran terakhir ...-ArgumentList
, pisahkan dengan koma like-ArgumentList /D=test,/S
.Selain menggunakan
Start-Process -Wait
, mem-piping output dari executable akan membuat Powershell menunggu. Tergantung pada kebutuhan, saya biasanya akan pipa untukOut-Null
,Out-Default
,Out-String
atauOut-String -Stream
. Berikut adalah daftar panjang beberapa opsi keluaran lainnya.Saya sangat merindukan operator gaya CMD / Bash yang Anda referensikan (&, &&, ||). Sepertinya kita harus lebih bertele-tele dengan Powershell .
sumber
Out-String
mengubah output menjadi string multi-baris tunggal , sedangkan PowerShell secara default mengembalikan array baris .Start-Process
harus dihindari untuk aplikasi konsol (kecuali jika Anda benar-benar ingin menjalankannya di jendela baru ) karena Anda tidak akan dapat menangkap atau mengarahkan outputnya.Cukup gunakan "Tunggu-proses":
pekerjaan sudah selesai
sumber
Jika Anda menggunakan
Start-Process <path to exe> -NoNewWindow -Wait
Anda juga dapat menggunakan
-PassThru
opsi untuk menggema output.sumber
-PassThru
gema (aplikasi non-konsol dengan definisi tidak akan menghasilkan output konsol), itu output contoh yang mewakili proses yang baru diluncurkan, sehingga Anda dapat memeriksa propertinya dan menunggu untuk keluar nanti.System.Diagnostics.Process
Beberapa program tidak dapat memproses aliran keluaran dengan sangat baik, menggunakan pipa untuk
Out-Null
mungkin tidak memblokirnya.Dan
Start-Process
perlu-ArgumentList
beralih untuk menyampaikan argumen, tidak begitu nyaman.Ada juga pendekatan lain.
sumber
Termasuk opsi
-NoNewWindow
memberi saya kesalahan:Start-Process : This command cannot be executed due to the error: Access is denied.
Satu-satunya cara saya dapat membuatnya bekerja adalah dengan menelepon:
sumber
Mengambil lebih jauh Anda bahkan bisa mengurai dengan cepat
misalnya
sumber
Selalu ada cmd. Mungkin kurang menjengkelkan jika Anda kesulitan mengutip argumen untuk memulai proses:
sumber