Comment exécuter plusieurs commandes sur une seule ligne dans PowerShell?

269

Dans une invite de commande, vous pouvez exécuter deux commandes sur une ligne, comme suit:

ipconfig /release & ipconfig /renew

Lorsque j'exécute cette commande dans PowerShell, je reçois:

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

PowerShell a-t-il un opérateur qui me permet de produire rapidement l'équivalent de &dans une invite de commande?

N'importe quelle méthode consistant à exécuter deux commandes sur une ligne fera l'affaire. Je sais que je peux faire un script, mais je cherche quelque chose d'un peu plus spontané.

David
la source
5
Remarque amusante: entre les ports série et la sérialisation, cette question est pratiquement impossible à rechercher.
David
Pour être ringard ... C'est très facile de le chercher. Il est assez difficile d'obtenir une série de résultats pertinents. :) (+1 pour bonne question)
Konrad Viltersten
1
Similaire à l' exécution conditionnelle (&& et ||) dans Powershell .
JamesThomasMoon1979

Réponses:

384

Utilisez un point-virgule pour chaîner les commandes dans PowerShell:

ipconfig /release; ipconfig /renew
À presser
la source
9
Vont-ils fonctionner en parallèle ou séquentiellement?
Tarkus
19
Cela les exécutera de manière séquentielle, comme le fait l'opérateur & dans cmd.exe.
Squeezy
43
Il y a une grande différence cependant - ";" exécute la deuxième commande même si la première échoue.
Ivan
10
Comme mentionné ci-dessus, il s’agit également du comportement de & in cmd.exe.
Squeezy
7
@Rafi Oui, essayez {Command-One -ea Stop} Catch {Command-Two}
Dave_J
30

Un point-virgule va lier les commandes comme indiqué dans la réponse précédente , bien que le comportement avec l' &opérateur dans l'interpréteur de style MS-DOS présente une différence essentielle .

Dans l'interpréteur de commandes, la substitution de variable a lieu lors de la lecture de la ligne. Cela offre des possibilités intéressantes, telles que l’échange de variables sans intermédiaire:

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

Aboutirait à:

2
1

Autant que je sache, il n’ya aucun moyen de reproduire ce comportement dans PowerShell. Certains diront que c'est une bonne chose.

Il existe en fait un moyen de faire cela dans PowerShell:

$b, $a = $a, $b

Il en résultera un échange d'une seule ligne des valeurs de variable.

Dave_J
la source
Ne semble pas fonctionner à partir du champ "Cible" avec l'option -commande en raccourci
clearlight