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é.


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

Réponses:


384

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

ipconfig /release; ipconfig /renew

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.


Ne semble pas fonctionner à partir du champ "Cible" avec l'option -commande en raccourci
clearlight
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.