Wie führe ich in PowerShell mehrere Befehle in einer Zeile aus?

268

In einer cmd-Eingabeaufforderung können Sie zwei Befehle in einer Zeile wie folgt ausführen:

ipconfig /release & ipconfig /renew

Wenn ich diesen Befehl in PowerShell ausführe, erhalte ich:

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

Verfügt PowerShell über einen Operator, mit dem ich schnell das Äquivalent &einer cmd-Eingabeaufforderung erstellen kann ?

Jede Methode zum Ausführen von zwei Befehlen in einer Zeile ist ausreichend. Ich weiß, dass ich ein Drehbuch schreiben kann, aber ich suche nach etwas, das ein wenig abseits der Manschette liegt.

David
quelle
5
Unterhaltsamer Hinweis: Zwischen seriellen Anschlüssen und Serialisierung kann nach dieser Frage praktisch nicht gesucht werden.
David
Nerdy zu sein ... Es ist sehr einfach, danach zu suchen. Es ist einfach ziemlich schwer, relevante Treffer zu bekommen. :) (+1 für tolle Frage)
Konrad Viltersten
1
Ähnlich der bedingten Ausführung (&& und ||) in Powershell .
JamesThomasMoon1979

Antworten:

384

Verwenden Sie ein Semikolon, um Befehle in PowerShell zu verketten:

ipconfig /release; ipconfig /renew
Quetschen
quelle
9
Laufen sie parallel oder nacheinander?
Tarkus
19
Dadurch werden sie nacheinander ausgeführt, ebenso wie der Operator & in cmd.exe.
Squeezy
43
Es gibt jedoch einen großen Unterschied - ";" Führt den zweiten Befehl aus, auch wenn der erste fehlschlägt.
Ivan
10
Wie oben erwähnt, ist dies auch das Verhalten von & in cmd.exe.
Squeezy
7
@Rafi Ja, versuchen Sie es mit {Command-One -ea Stop} Catch {Command-Two}
Dave_J
30

Ein Semikolon verknüpft die Befehle wie in der vorherigen Antwort angegeben , obwohl es einen wesentlichen Unterschied zum Verhalten des &Operators im MS-DOS-Befehlsinterpreter gibt.

Im Befehlsinterpreter erfolgt die Variablensubstitution beim Lesen der Zeile. Dies ermöglicht einige nette Möglichkeiten, wie zum Beispiel das Tauschen von Variablen ohne Zwischenzeit:

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

Würde ergeben:

2
1

Soweit ich weiß, gibt es keine Möglichkeit, dieses Verhalten in PowerShell zu replizieren. Einige mögen argumentieren, dass das eine gute Sache ist.

In PowerShell gibt es tatsächlich eine Möglichkeit, dies zu tun:

$b, $a = $a, $b

Dies führt zu einem einzeiligen Tausch der Variablenwerte.

Dave_J
quelle
Scheint jedoch nicht über das Feld "Ziel" mit der Option
-command