20/09/2024

Les cmdlets PowerShell

I. Présentation

Quand nous utilisons PowerShell, nous faisons appelle à des commandes correspondant à des cmdlets PowerShell, des commandes DOS, des scripts, mais également des fonctions. Chaque commande va nous permettre d'exécuter une ou plusieurs actions sur la machine, en fonction de ses paramètres et de sa finalité.

Les commandes spécifiques à PowerShell, que ce soit Get-Help, Get-Service, Restart-Computer, etc... ont un nom bien précis : cmdlet, que l'on prononcera "command-let" (ou “commandlette” si vous préférez). C'est ce que nous allons étudier plus en détail dans ce chapitre.

II. La notion de cmdlet PowerShell

Tout d'abord, il faut savoir que chaque cmdlet PowerShell a une fonction bien précise : créer un fichier, redémarrer l'ordinateur, récupérer la liste des processus, créer un utilisateur, renommer un dossier, etc... Selon ce pour quoi il a été conçu initialement. Les cmdlets ont également des paramètres, mais nous aborderons cette notion dans le prochain chapitre.

Il est important de comprendre que chaque cmdlet PowerShell fait référence à un module PowerShell, et que chaque module PowerShell est associé à une bibliothèque DLL présente sur la machine. Lorsqu'une console PowerShell est lancée, Windows charge les éléments en mémoire pour les rendre disponibles dans la console PowerShell en cours d'exécution.

A. Le nom des cmdlets : verbe + nom

Microsoft a eu l'excellente idée de normaliser le nom des cmdlets PowerShell. Ainsi, chaque cmdlet PowerShell est constitué de la façon suivante : un verbe + un nom. Il est important de préciser et de retenir que le verbe et le nom sont toujours séparés par un tiret "-".

Grâce à cette logique et à condition d'être un minimum à l'aise avec l'anglais (oui, tous les noms de cmdlets sont en anglais), nous pouvons presque traduire le nom d'un cmdlet pour comprendre à quoi il sert.

Par exemple, le cmdlet "Get-Service" sert à obtenir la liste de tous les services présents sur une machine Windows. Nous aurions pu le deviner : Get-Service = Obtenir les services, si l'on effectue la traduction littérale. D'un point de vue de PowerShell, nous obtiendrons une liste d'objets correspondante aux services Windows. Bien que ce ne soit pas toujours aussi simple, cette mécanique est intéressante.

Vous n'êtes pas encore convaincu ? Voici un autre exemple : le cmdlet "New-Item", que l'on peut traduire par "Nouvel élément", où l'élément pourra être un fichier, un dossier, ou encore une clé de Registre.

B. Les verbes approuvés

Quand les développeurs créent de nouveaux cmdlets PowerShell, sachez que le choix du verbe n'est pas effectué aléatoirement. En effet, lors du choix d'un verbe, tout n'est pas autorisé même s'il n'y a pas de limite technique.

Le cmdlet PowerShell suivant permet d'obtenir la liste de tous les verbes approuvés :

Get-Verb

Par ailleurs, sur le site de Microsoft, nous pouvons obtenir la liste de tous les verbes approuvés avec leur signification.

Voici un extrait de la liste de verbes approuvés :

PowerShell - Verbes approuvés

Si nous prenons l'exemple du verbe "Get", Microsoft indique la description suivante : "Spécifie une action qui récupère une ressource.". Cela signifie que vous n'aurez jamais un cmdlet PowerShell qui vous permettra de créer, supprimer ou modifier un élément ou une ressource ! Tous les cmdlets "Get-<nom>" servent à obtenir des informations.

Nous pouvons citer quelques exemples :

  • Get-Service : obtenir la liste des services présents sur la machine
  • Get-Process : obtenir la liste des processus en cours d'exécution sur la machine
  • Get-LocalUser : obtenir la liste des comptes utilisateurs locaux
  • Get-Tpm : obtenir des informations sur la puce TPM présente dans la machine
  • Get-PSDrive : obtenir la liste de tous les lecteurs montés sur la machine

Retenez que le verbe sert à décrire l'action initiée par le cmdlet PowerShell, tandis que le nom apporte des précisions sur la typologie de ressources ciblée.

III. Parcourir la liste des cmdlets PowerShell

Pour explorer la liste des cmdlets PowerShell disponibles sur une machine, vous devez utiliser le cmdlet suivant :

Get-Command

Lorsqu'il est exécuté, il retourne l'ensemble des cmdlets disponibles sur la machine locale. D'une machine à l'autre, cette liste peut varier en fonction de la version de PowerShell utilisée, mais également des modules PowerShell installés par l'utilisateur. D'ailleurs, vous pouvez vous amuser à exécuter la commande ci-dessous pour obtenir le nombre total de cmdlets disponibles sur votre machine :

(Get-Command).Count

Pour parcourir la liste des cmdlets plus efficacement, nous allons pouvoir appliquer des filtres grâce à l'utilisation de paramètres.

Voici quelques exemples...

  • Obtenir la liste de toutes les commandes avec le verbe "Get"
Get-Command -Verb Get
  • Obtenir la liste de toutes les commandes avec le nom "Service"
Get-Command -Noun Service

Ceci est intéressant pour rechercher le nom d'un cmdlet relatif à la gestion des services. L'inconvénient, c'est que le nom utilisé dans le cmdlet doit exactement correspondre à celui recherché via Get-Command.

  • Obtenir la liste des commandes en fonction d'un mot clé, par exemple "service"
Get-Command *service*

Le fait d'indiquer un astérisque avant et après le mot clé va permettre d'autoriser X caractères avant et Y caractères après le mot clé "service". Ainsi, la recherche est moins stricte, et en comparaison de l'exemple précédent, cette commande retournera des résultats complémentaires. Par exemple, le cmdlet "New-WebServiceProxy" sera retourné, car il contient bien le terme "Service".

IV. Conclusion

Après avoir lu ce chapitre, vous en savez plus sur les cmdlets PowerShell, même si nous devons encore approfondir cette notion en parlant des paramètres : rendez-vous au prochain chapitre.


livre pour apprendre PowerShell
author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.