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


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, bekomme ich:

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

Hat PowerShell einen Operator, der es mir ermöglicht, schnell das Äquivalent von & in einer cmd-Eingabeaufforderung?

Jede Methode, zwei Befehle in einer Zeile auszuführen, reicht aus. Ich weiß, dass ich ein Drehbuch machen kann, aber ich suche etwas, das etwas aus dem Stegreif ist.


198
2018-06-26 17:24


Ursprung


Fun Hinweis: Zwischen diesen seriellen Ports und der Serialisierung ist diese Frage praktisch unmöglich. - David
Nerd sein ... Es ist sehr einfach, danach zu suchen. Es ist ziemlich schwierig, relevante Treffer zu erhalten. :) (+1 für gute Frage) - Konrad Viltersten


Antworten:


Verwenden Sie ein Semikolon zum Verketten von Befehlen in PowerShell:

ipconfig /release; ipconfig /renew

283
2018-06-26 17:28



Werden sie parallel oder sequenziell laufen? - Tarkus
Dadurch werden sie sequenziell ausgeführt, wie auch der & Operator in cmd.exe. - Squeezy
Es gibt jedoch einen großen Unterschied - ";" Führt den zweiten Befehl aus, auch wenn der erste fehlschlägt. - Ivan
Wie oben erwähnt, ist dies auch das Verhalten von & in cmd.exe. - Squeezy
Gibt es eine Möglichkeit, den zweiten Befehl nur auszuführen, wenn der erste fehlschlägt? - Rafi


Ein Semikolon verbindet die Befehle wie in der vorherigen Antwort angegeben, obwohl es einen wesentlichen Unterschied zum Verhalten mit dem Befehl gibt & Operator in dem MS-DOS-Formatbefehlsinterpreter.

Im Befehlsinterpreter findet die Variablensubstitution beim Lesen der Zeile statt. Dies ermöglicht einige nette Möglichkeiten, wie zum Beispiel das Austauschen von Variablen ohne Zwischenzeiten:

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. Manche mögen argumentieren, dass das eine gute Sache ist.

Es gibt tatsächlich eine Möglichkeit, dies in PowerShell zu tun:

$b, $a = $a, $b

Dies führt zu einem einzelnen Zeilenwechsel der Variablenwerte.


28
2017-09-10 17:16



Funktioniert anscheinend nicht vom Feld "Ziel" mit der Option -Kommando in der Verknüpfung - clearlight