2.1 : Verbe-Nom : la logique universelle des cmdlets

Vous avez déjà croisé cette structure en leçon 1.4 sans qu’on s’y attarde vraiment : Get-Process, Start-Service, New-ADUser. Sophie vous arrête devant le tableau des postes de l’atelier : « Ce n’est pas juste une habitude d’écriture. C’est ce qui te permettra un jour de deviner une commande que tu n’as jamais vue. »

Une chaîne de montage sans surprise

Sur une vraie chaîne de montage, chaque poste est étiqueté de façon standardisée : on sait immédiatement si c’est un poste de montage, de contrôle ou de réparation. PowerShell applique exactement ce principe à ses cmdlets, avec un format figé :

Verbe-Nom
  • Le Verbe décrit l’action (Get, Set, New, Remove, Start, Stop…)
  • Le Nom décrit la pièce sur laquelle on agit, toujours au singulier (Process, Service, ADUser, Item…)

Ce n’est pas une convention informelle que certains développeurs suivent et d’autres non : Microsoft impose une liste fermée de verbes approuvés. Vous pouvez la consulter directement :

Get-Verb

Cette commande renvoie plusieurs centaines de verbes, classés par catégorie (Common, Data, Lifecycle, Security…). Un module qui inventerait son propre verbe en dehors de cette liste déclenchera même un avertissement au chargement.

Pourquoi cette rigueur change tout au quotidien

Reprenons un exemple concret. Vous savez que Get-Service liste les services. Sans avoir jamais tapé la commande suivante, vous pouvez déjà deviner :

  • Start-Service : démarre un service
  • Stop-Service : arrête un service
  • Restart-Service : redémarre un service
  • Set-Service : modifie la configuration d’un service

C’est exactement ce qui vous a permis de réussir l’étape 5 du TP de la section précédente sans documentation. Cette prévisibilité est un gain de temps énorme une fois qu’on connaît une dizaine de verbes courants :

VerbeAction
GetRécupérer une information
SetModifier une configuration existante
NewCréer un nouvel élément
RemoveSupprimer un élément
Start / StopDémarrer / arrêter un processus ou service
TestVérifier une condition (renvoie souvent $true/$false)
Import / ExportCharger / sauvegarder des données

Et les alias, dans tout ça ?

Vous croiserez parfois des raccourcis comme ls, dir, cat, gci, ou % à la place de Get-ChildItem ou ForEach-Object. Ce sont des alias, pratiques dans le terminal pour aller vite, mais à éviter dans un script destiné à être relu ou maintenu par quelqu’un d’autre.

Get-Alias ls

Cette commande vous révèle que ls n’est qu’un raccourci vers Get-ChildItem.

Retenez ce réflexe : face à une cmdlet inconnue dans un script Nordika, décomposez-la en Verbe-Nom. Neuf fois sur dix, ça suffit à comprendre ce qu’elle fait avant même d’ouvrir l’aide.

Dans la prochaine leçon, on ouvre le capot d’un objet avec Get-Member, pour voir concrètement ce qui circule sur notre tapis roulant.