Bagaimana cara menjalankan beberapa perintah pada satu baris di PowerShell?

269

Dalam prompt cmd, Anda dapat menjalankan dua perintah pada satu baris seperti:

ipconfig /release & ipconfig /renew

Ketika saya menjalankan perintah ini di PowerShell, saya mendapatkan:

Ampersand not allowed. The `&` operator is reserved for future use

Apakah PowerShell memiliki operator yang memungkinkan saya untuk dengan cepat menghasilkan setara &dalam cmd prompt?

Metode menjalankan dua perintah dalam satu baris akan dilakukan. Saya tahu bahwa saya dapat membuat skrip, tetapi saya mencari sesuatu yang sedikit lebih sulit.

David
sumber
5
Catatan Menyenangkan: Antara port Serial dan Serialisasi, pertanyaan ini hampir tidak mungkin untuk dicari.
David
Menjadi kutu buku ... Sangat mudah untuk mencarinya. Cukup sulit untuk mendapatkan serangkaian klik yang relevan. :) (+1 untuk pertanyaan hebat)
Konrad Viltersten
1
Mirip dengan eksekusi kondisional (&& dan ||) di PowerShell .
JamesThomasMoon1979

Jawaban:

384

Gunakan titik koma untuk rantai perintah di PowerShell:

ipconfig /release; ipconfig /renew
Terjepit
sumber
9
Akankah mereka berjalan secara paralel atau berurutan?
Tarkus
19
Ini akan menjalankannya secara berurutan, seperti halnya operator & di cmd.exe.
Terjepit
43
Ada perbedaan besar meskipun - ";" menjalankan perintah kedua bahkan jika yang pertama gagal.
Ivan
10
Seperti disebutkan di atas, ini juga merupakan perilaku & di cmd.exe.
Meremas
7
@Rafi Ya, Coba {Command-One -ea Stop} Tangkap {Command-Two}
Dave_J
30

Tanda titik koma akan menautkan perintah seperti jawaban sebelumnya yang dinyatakan , meskipun ada perbedaan kunci untuk perilaku dengan &operator dalam penerjemah perintah gaya MS-DOS.

Dalam interpreter perintah, substitusi variabel terjadi ketika baris dibaca. Ini memungkinkan beberapa kemungkinan rapi seperti menukar variabel tanpa interim:

set a=1
set b=2
set a=%b% & set b=%a%
echo %a%
echo %b%

Akan menghasilkan:

2
1

Sejauh yang saya tahu, tidak ada cara untuk mereplikasi perilaku ini di PowerShell. Beberapa mungkin berpendapat itu hal yang baik.

Sebenarnya ada cara untuk melakukan ini di PowerShell:

$b, $a = $a, $b

Ini akan menghasilkan pertukaran baris tunggal dari nilai variabel.

Dave_J
sumber
Tampaknya tidak bekerja dari bidang "Target" dengan opsi
-command