43 votes

Remplacements pour l'esperluette et le double esperluette dans PowerShell

Dans le processeur CMD natif de Windows, vous pouvez utiliser & pour chainer des commandes afin qu'elles s'exécutent immédiatement l'une après l'autre. Un && exécutera la deuxième commande uniquement si la première se termine sans erreur.

Cela diffère de l'association de commandes avec | dans la mesure où la sortie de la première commande n'est pas envoyée à la deuxième commande, les commandes sont simplement exécutées l'une après l'autre et la sortie de chaque commande est envoyée à sa place habituelle.

Cependant, j'obtiens une erreur lorsque j'essaie d'utiliser & ou && dans PowerShell. Existe-t-il des fonctions similaires disponibles dans PowerShell, ou cette fonctionnalité est-elle en voie de dépréciation ?

52voto

SS4Soku Points 536

L'opérateur & in PowerShell est tout simplement le point-virgule ou ;.

L'opérateur && in PowerShell doit être exécuté comme une instruction if.

Commande ; if($?) {Commande}

Exemple :

tsc ; if($?) {node dist/run.js}

1voto

mopsled Points 641

Essayez cette fonction, qui peut être utilisée de manière assez similaire :

fonction aa() {
    if($?) {
        $command = [string]::join(' ', $args[1..99])
        & $args[0] $command
    }
}

Maintenant && peut être remplacé par ; aa, ce qui, bien que toujours pas parfait, est beaucoup plus succinct.

cls && build

devient

cls; aa build

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X