Jak uruchomić wiele poleceń w jednym wierszu w programie PowerShell?

268

W wierszu polecenia cmd możesz uruchomić dwa polecenia w jednym wierszu:

ipconfig /release & ipconfig /renew

Po uruchomieniu tego polecenia w programie PowerShell otrzymuję:

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

Czy PowerShell ma operator, który pozwala mi szybko wyprodukować odpowiednik &polecenia cmd?

Wystarczy dowolna metoda uruchamiania dwóch poleceń w jednym wierszu. Wiem, że mogę napisać scenariusz, ale szukam czegoś więcej.

David
źródło
5
Zabawna uwaga: pomiędzy portami szeregowymi a serializacją tego pytania jest praktycznie niemożliwe.
David
Być kujonem ... Bardzo łatwo go znaleźć. Trudno jest uzyskać odpowiedni zestaw trafień. :) (+1 za świetne pytanie)
Konrad Viltersten
1
Podobne do wykonywania warunkowego (&& i ||) w PowerShell .
JamesThomasMoon1979,

Odpowiedzi:

384

Użyj średnika do połączenia poleceń w PowerShell:

ipconfig /release; ipconfig /renew
Ściśnij
źródło
9
Czy będą działać równolegle czy sekwencyjnie?
Tarkus
19
Spowoduje to uruchomienie ich sekwencyjnie, podobnie jak operator & w cmd.exe.
Squeezy
42
Jest jednak duża różnica - „;” uruchamia drugie polecenie, nawet jeśli pierwsze się nie powiedzie.
Ivan
10
Jak wspomniano powyżej, jest to również zachowanie programu & in cmd.exe.
Squeezy,
7
@Rafi Tak, spróbuj {Command-One -ea Stop} Złap {Command-Two}
Dave_J
30

Średnik połączy polecenia zgodnie z poprzednią odpowiedzią , chociaż istnieje zasadnicza różnica w stosunku do zachowania &operatora w interpretatorze poleceń w stylu MS-DOS.

W interpretatorze poleceń podstawienie zmiennej następuje podczas odczytu linii. Pozwala to na kilka ciekawych możliwości, takich jak zamiana zmiennych bez tymczasowego:

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

Spowodowałoby to:

2
1

O ile mi wiadomo, nie ma sposobu na replikację tego zachowania w PowerShell. Niektórzy mogą twierdzić, że to dobra rzecz.

Istnieje sposób na wykonanie tego w PowerShell:

$b, $a = $a, $b

Spowoduje to zamianę wartości zmiennych w jednym wierszu.

Dave_J
źródło
Wydaje się, że nie działa z pola „Cel” z opcją -command w skrócie
wyczyść