Exécuter les commandes CMD dans PowerShell

Marion Paul Kenneth Mendoza 30 janvier 2023
  1. Utilisation de l’opérateur d’invocation PowerShell &
  2. Exécution des commandes CMD à l’aide de cmd.exe
  3. Canalisation vers CMD à l’aide de PowerShell
Exécuter les commandes CMD dans PowerShell

De nombreuses commandes d’invite de commande (CMD) héritées fonctionnent dans l’environnement de script Windows PowerShell. L’environnement PowerShell transmet ces commandes des commandes les plus utilisées comme ping aux commandes les plus informatives comme tracert de l’environnement hérité en utilisant des alias.

Cependant, certaines commandes en cours d’exécution dans le terminal d’invite de commandes ne fonctionneront pas dans l’environnement de script de Windows PowerShell. Cet article explique comment nous pouvons les transcrire correctement dans Windows PowerShell.

Utilisation de l’opérateur d’invocation PowerShell &

L’ancien CMD fonctionnera avec succès lorsque nous exécuterons des programmes de ligne de commande avec un format de fichier exécutable (.exe) situé sur un chemin spécifique, suivi de la commande réelle.

Si nous prenons l’exemple de syntaxe ci-dessous, nous pouvons effectuer une analyse rapide à l’aide du scanner de ligne de commande Avast si nous exécutons le script dans CMD, et cela fonctionnera avec succès.

Exemple de code :

"C:\Program Files\AVAST Software\Avast\ashCmd.exe" /Quick

Cependant, si nous prenons la même syntaxe et l’exécutons dans Windows PowerShell, nous obtiendrons une erreur d’exception. La raison de l’erreur est que Windows PowerShell voit les guillemets doubles "" comme une valeur de chaîne littérale, et le paramètre /Quick accompagné dans la syntaxe n’est disponible dans aucune des bibliothèques natives.

De plus, l’exécution uniquement du chemin d’accès entre guillemets dans Windows PowerShell ne produira que la valeur de chaîne plutôt que d’exécuter le fichier exécutable lui-même.

Exemple de code :

"C:\Program Files\AVAST Software\Avast\ashCmd.exe"

Production :

C:\Program Files\AVAST Software\Avast\ashCmd.exe

Pour remédier à ce problème, nous pouvons appeler l’opérateur Invocation ou le signe esperluette & au début de la ligne de commande pour exécuter correctement le chemin de l’exécutable dans Windows PowerShell.

& "C:\Program Files\AVAST Software\Avast\ashCmd.exe" /Quick

L’utilisation de l’opérateur d’invocation dans l’environnement PowerShell traitera le chemin de la chaîne comme un chemin réel vers le fichier exécutable. Par conséquent, il exécutera le script directement avec le paramètre de commande qui l’accompagne.

Exécution des commandes CMD à l’aide de cmd.exe

Un autre exemple d’exécution de commandes CMD consiste à utiliser le cmd.exe. Nous pouvons ajouter cmd.exe dans Windows PowerShell comme notre méthode précédente.

Une fois ajouté et exécuté, il appellera l’interface de ligne de commande à l’intérieur de l’invite de commande Windows PowerShell.

cmd.exe /c where python

Le paramètre /c exécutera la commande saisie et terminera l’interpréteur de ligne de commande cmd.exe.

Vous pouvez exécuter la syntaxe ci-dessous pour afficher la documentation d’aide de la commande cmd.exe pour plus d’informations sur d’autres paramètres. De plus, vous pouvez exécuter la commande ci-dessous sur les interfaces de ligne de commande PowerShell et CMD.

cmd.exe /?

Canalisation vers CMD à l’aide de PowerShell

Dans Windows PowerShell, nous pouvons également envoyer des commandes au terminal d’invite de commande en redirigeant la cmdlet cmd vers la commande que vous souhaitez envoyer.

Dans l’exemple de syntaxe ci-dessous, la demande d’interrogation des configurations IP de votre ordinateur local est envoyée à l’interface de ligne de commande CMD. Après avoir exécuté le code, le terminal CMD est terminé et l’utilisateur est ramené au terminal PowerShell désigné par PS en début de ligne.

Exemple de code :

"Ipconfig /all" | cmd
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn