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.


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

Antworten:


384

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

ipconfig /release; ipconfig /renew

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.


Scheint jedoch nicht über das Feld "Ziel" mit der Option
-command
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.