Question Comment puis-je exécuter plusieurs commandes sur une ligne dans PowerShell?


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

ipconfig /release & ipconfig /renew

Lorsque je lance cette commande dans PowerShell, j'obtiens:

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

Est-ce que PowerShell a un opérateur qui me permet de produire rapidement l'équivalent de & dans une invite cmd?

Toute méthode d'exécution de deux commandes sur une ligne suffit. Je sais que je peux faire un script, mais je cherche quelque chose d'un peu plus excitant.


198
2018-06-26 17:24


origine


Note amusante: entre les ports série et la sérialisation, cette question est pratiquement impossible à rechercher. - David
Pour être ringard ... Il est très facile de le chercher. Il est tout à fait difficile d'obtenir un ensemble de résultats pertinents. :) (+1 pour une excellente question) - Konrad Viltersten


Réponses:


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

ipconfig /release; ipconfig /renew

283
2018-06-26 17:28



Vont-ils fonctionner en parallèle ou séquentiellement? - Tarkus
Cela les exécutera séquentiellement, tout comme l'opérateur & dans cmd.exe. - Squeezy
Il y a une grande différence cependant - ";" exécute la deuxième commande même si le premier échoue. - Ivan
Comme mentionné ci-dessus, il s'agit également du comportement de & in cmd.exe. - Squeezy
Est-il possible de faire en sorte que la deuxième commande ne soit exécutée que si le premier échoue? - Rafi


Un point-virgule lie les commandes comme indiqué dans la réponse précédente, bien qu'il y ait une différence clé avec le comportement avec le & opérateur dans l'interpréteur de commandes de style MS-DOS.

Dans l'interpréteur de commandes, la substitution de variable a lieu lors de la lecture de la ligne. Cela permet certaines 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%

Entraînerait:

2
1

Pour autant que je sache, il n'y a aucun moyen de répliquer ce comportement dans PowerShell. Certains peuvent prétendre que c'est une bonne chose.

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

$b, $a = $a, $b

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


28
2017-09-10 17:16



Ne semble pas fonctionner à partir du champ "Cible" avec l'option -command dans le raccourci si - clearlight