web-dev-qa-db-fra.com

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

Dans une invite cmd, 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é.

248
David

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

ipconfig /release; ipconfig /renew
357
Squeezy

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 le interpréteur de commandes 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 de ligne des valeurs de variable sur une seule ligne.

29
Dave_J