Menu Fermer

Powershell et CMD (invite de commandes) : les différences

Windows 7 apporte PowerShell, un shell de ligne de commande et un langage de script plus puissants que l’invite de commandes.
Depuis Windows 7, PowerShell est devenu plus important, devenant même le choix par défaut dans Windows 10.

Qu’apporte Powershell ?
Quelles sont les différences avec l’invite de commandes (CMD) ?

Cet article vous explique les nouveautés et différence entre Powershell et l’invite de commandes.

Qu’est-ce que Powershell et l’invite de commandes ?

Les deux sont des interfaces systèmes.
C’est à dire que vous pouvez configurer, modifier ou commander le système à partir de commandes.
L’utilisateur saisit donc les commandes depuis un terminal afin d’interagir avec le système d’exploitation.

Plus de détails sur le terminal, shell :

L’invite de commandes

L’invite de commandes est un vestige de MS-DOS.
C’est essentiellement un simple environnement hérité de DOS où on retrouve beaucoup de ces commandes.
C’est donc un environnement très ancien avec beaucoup de limites.
Il permet tout de même de créer des scripts batchs afin d’automatiser certaines tâches.

Voici un exemple de commandes CMD où on affiche la version de Windows ou encore liste les fichiers et dossiers d’un répertoire.

L'invite de commandes de Windows

Enfin la sortie des commandes CMD est du texte. Cela rend l’enchaîne de commandes très difficile.
Ainsi l’invite de commandes est très largement inférieure aux terminaux et shell Linux.
C’est un handicap pour Windows dans la guerre des serveurs.

L’invite de commandes fonctionne avec cmd.exe et conhost.exe (Console Window Host Process).
A lire en lien :

Powershell

Pour se positionner, Microsoft propose depuis Windows 7 Powershell.
C’est donc la nouvelle interface système qui vise à remplacer l’invite de commandes.

C’est un environnement basé sur le .NET Framework.
Les commandes CMD fonctionnent dessus et il apporte les cmdlets.
On peut traduire ces derrières par applets de commande.
De nombreuses tâches d’administration système – de la gestion du registre à WMI (Windows Management Instrumentation) – sont exposées via les applets de commande PowerShell, alors qu’elles ne sont pas accessibles à partir de l’invite de commandes.
Elles sont donc très variées afin d’effectuer la plupart des tâches systèmes mais on peut aussi en ajouter manuellement afin d’étendre la porté de PowerShell.

Par exemple avec Powershell, vous pouvez manipuler des objets Active Directory, modifier la configuration de Windows Defender, etc.
Ce qui est impossible en CMD.

Les sorties des commandes PowerShell sont des objets.
Vous pouvez donc les manipuler comme dans un shell Linux, ce qui apporte une dimension supplémentaire.
Ainsi avec des pipes (tubes), on peut faire des recherches dans les sorties, les modifier ou les filtrer.
Et ainsi cela permet de créer des scripts beaucoup plus complexes.
Par exemple ci-dessous, on mettre pause la liste donné en résultat grâce au cmdlet Out-Host.

Cela ouvre d’ailleurs à la création de malware écrit totalement en PowerShell alors que ce n’était pas possible en CMD.
Lire à ce sujet : Les virus ou trojan Powershell.

Pour une présentation plus complète, lire :

En résumé

L’invite de commandes :

  • est un environnement hérité de DOS.
  • les sorties sont en texte ce qui limite la complexité des scripts.
  • il manque beaucoup d’éléments de gestion système ou réseau. Par exemple en invite, il est difficile de gérer les mises à jour Windows ou Active Directory.

Powershell vise à combler toutes les limites de l’invite de commandes :

  • Les commandes CDM fonctionnent dessus.
  • Les cmdlets donnent la possibilité de gérer toutes les tâches systèmes.
  • C’est aussi un langage de script pour automatiser les tâches systèmes

Quand utiliser CMD et PowerShell ?

Pour des tâches simples, vous pouvez créer un script batch.
Par exemple pour modifier l’adresse IP ou DNS d’une interface.
Mais dès qu’il s’agit d’effectuer des choses plus complexes dans le système, vous serez vite limiter.

Powershell permet de faire à peu près tout dès lors que les cmdlets existent.
Il ne reste plus alors qu’à coder le script Powershell.
Et s’il n’existe pas, on peut créer un cmdlets personnalisées ou en trouver un sur internet.
Powershell est donc plutôt destiné aux administrateurs système.
Cela permet de gérer les systèmes plus efficacement.

CMD et l’invite de commandes va probablement disparaître un jour pour être remplacé totalement par PowerShell.

Windows Terminal

Le terminal Windows est une application de terminal moderne, rapide, efficace, puissante et productive pour les utilisateurs d’outils en ligne de commande et d’environnements tels que l’Invite de commandes, PowerShell et WSL.
Ses principales fonctionnalités incluent plusieurs onglets, des volets, une prise en charge des caractères Unicode et UTF-8, un moteur de rendu de texte accéléré par GPU, ainsi que des thèmes, styles.

Le Windows Terminal

Cela permet de combinaison donc PowerShell, l’invite de commandes et une distribution Linux en WSL sur votre Windows 10.