Introduction à PowerShell

PowerShell a vu le jour au milieu des années 2000, développé par Microsoft pour répondre au besoin croissant d'automatisation et de gestion efficace des systèmes Windows. Avant PowerShell, l'administration Windows reposait principalement sur des interfaces graphiques et des scripts batch limités. Avec l'arrivée de PowerShell, Microsoft a introduit un langage de script puissant, basé sur .NET, qui permet d'automatiser pratiquement toutes les tâches d'administration système.

L'utilité de PowerShell réside dans sa capacité à gérer à la fois des tâches simples et complexes, que ce soit sur un poste de travail ou à l'échelle d'un parc de serveurs. Grâce à ses cmdlets, modules et scripts, il permet d'automatiser la gestion des utilisateurs, des services, des processus, des fichiers, et bien plus encore. PowerShell est également extensible : il est possible d'ajouter des modules pour gérer des applications tierces ou des services cloud comme Azure.

PowerShell partage de nombreux concepts avec les shells Unix/Linux, comme Bash. Les deux environnements permettent l'exécution de commandes, la création de scripts, la gestion des processus et la manipulation de fichiers. Cependant, PowerShell se distingue par sa gestion des objets : au lieu de manipuler uniquement du texte, il traite des objets .NET, ce qui facilite l'accès aux propriétés et méthodes des éléments manipulés. Cette approche rend les scripts plus robustes et plus faciles à maintenir.

Pour un technicien informatique, maîtriser PowerShell est devenu incontournable. Non seulement il permet de gagner du temps en automatisant des tâches répétitives, mais il offre aussi une grande flexibilité pour diagnostiquer et résoudre des problèmes. De plus, la connaissance de PowerShell est souvent exigée dans les environnements professionnels, notamment pour l'administration de serveurs, la gestion d'Active Directory ou le déploiement d'applications. En somme, PowerShell est un outil essentiel pour tout professionnel souhaitant optimiser la gestion des systèmes Windows et élargir ses compétences en automatisation.

Commande

Les commandes PowerShell sont des instructions que vous pouvez exécuter dans la console PowerShell. Elles peuvent être des cmdlets, des fonctions, des workflows ou des applications externes. Nous verrons en détails la différence entre ces types de commande.

Toutes les commandes suivent une syntaxe similaire, qui est la suivante :


Anatomie d'une commande PowerShell

PowerShell


Dans cet exemple:
  • Le nom de la cmdlet est Get-EventLog. Les cmdlets PowerShell suivent toujours le format de nommage verbe-nom. Nous expliquerons davantage les cmdlets dans la section suivante.
  • Le premier paramètre est -LogName, auquel on attribue la valeur Security. Comme la valeur ne contient ni espace ni ponctuation, elle n'a pas besoin d'être entre guillemets.
  • Le second paramètre est -ComputerName, auquel on attribue deux valeurs : WIN8 et SERVER1. Ces valeurs sont séparées par une virgule et, comme elles ne contiennent ni espace ni ponctuation, elles n'ont pas besoin d'être entre guillemets.
  • Le dernier paramètre, -Verbose, est un paramètre commutateur (switch). Cela signifie qu'il ne prend pas de valeur ; il suffit de spécifier le paramètre.
  • Il y a un espace obligatoire entre le nom de la commande et le premier paramètre.
  • Les noms de paramètres commencent toujours par un tiret (-).
  • Il y a un espace obligatoire après le nom du paramètre, et entre la valeur du paramètre et le nom du paramètre suivant.
  • Il n'y a pas d'espace entre le tiret (-) et le nom du paramètre.
  • Rien n'est sensible à la casse.

Terminologie

  • Une cmdlet est une commande native de PowerShell. Elles existent uniquement dans PowerShell et sont écrites dans un langage du framework .NET comme C#. Le mot cmdlet est propre à PowerShell, donc si vous l'ajoutez à vos mots-clés de recherche sur Google ou Bing, les résultats seront principalement liés à PowerShell. Le mot se prononce "command-let".
  • Une fonction peut être similaire à une cmdlet, mais elle est écrite dans le langage de script de PowerShell.
  • Un workflow est un type particulier de fonction qui s'intègre au système d'exécution des workflows de PowerShell.
  • Une application est tout exécutable externe, y compris les utilitaires en ligne de commande comme ping et ipconfig.
  • Commande est le terme générique utilisé pour désigner l'ensemble des éléments précédents.

Microsoft a établi des conventions de nommage pour les cmdlets, qui sont suivies par la plupart des développeurs. Ces conventions aident à comprendre rapidement ce que fait une cmdlet. Les noms commencent par un verbe standard, comme Get, Set, New ou Pause. Vous pouvez exécuter Get-Verb pour voir la liste des verbes autorisés (il y en a environ 100, mais une douzaine sont courants). Après le verbe, il y a un tiret, suivi d'un nom au singulier, comme Service, Process ou EventLog. Les développeurs créent leurs propres noms, donc il n'existe pas de cmdlet Get-Noun pour tous les afficher.

Alias

PowerShell permet d'utiliser des alias pour les cmdlets, ce qui facilite la saisie de commandes courantes. Un alias est un raccourci pour une cmdlet, une fonction ou un script. Par exemple, l'alias gsv est un raccourci pour la cmdlet Get-Service. Vous pouvez créer vos propres alias ou utiliser ceux déjà définis par PowerShell.