Tutoriel de Windows PowerShell Scripting pour débutants

Automatisons-le. Mais où est passé ce script ?…
Attention : PowerShell crée une dépendance !

Faites connaissance avec le tutoriel PowerShell

Windows PowerShell est un moteur d’automatisation orienté objet ainsi qu’un langage de script. Doté d’un interpréteur de commandes interactif, il est conçu pour aider les professionnels de l’informatique à configurer les systèmes et automatiser les tâches d’administration. Il est intégré à tous les systèmes d’exploitation Windows modernes depuis Windows 2008R2. L’apprentissage de Windows PowerShell peut-être comparé à l’apprentissage d’un outil polyvalent. Dans le présent billet, j’aborde les bases des scripts PowerShell dans le but de vous permettre d’effectuer plus facilement la plupart des tâches d’administration liées à votre environnement informatique Windows.

Commençons à apprendre PowerShell.

PowerShell comprend une option de ligne de commande et un environnement d’écriture de scripts intégré (ISE) :

  • Pour ouvrir la ligne de commande PowerShell, tapez exe dans le menu Démarrer de Windows. Un écran comme celui-ci s’affiche :

  • Pour l’ISE PowerShell, tapez powershell_ise.exe dans le menu Démarrer. L’utilisation de l’ISE PowerShell est la meilleure façon de travailler avec le langage de script, car cet environnement offre une surbrillance syntaxique, un remplissage automatique des commandes et d’autres fonctions d’automatisation qui simplifient la rédaction et le test des scripts.

Préparation à l’exécution de scripts PowerShell

Les scripts PowerShell sont stockés dans des fichiers .ps1. Vous ne pouvez pas exécuter un script en double-cliquant simplement sur son fichier, ceci afin d’éviter d’endommager accidentellement vos systèmes. Au lieu de cela, cliquez avec le bouton droit de la souris sur le fichier et sélectionnez « Exécuter avec PowerShell » :

De plus, une politique restreint l’exécution des scripts. Vous pouvez consulter cette politique en exécutant la commande Get-ExecutionPolicy dans PowerShell :

Vous obtiendrez l’une des valeurs suivantes :

  • Restricted — Aucun script n’est autorisé. Il s’agit du paramètre par défaut, que vous verrez donc lors de votre première exécution de la commande.
  • AllSigned — Vous pouvez exécuter les scripts signés par un développeur de confiance. Ce paramétrage vous demandera, avant l’exécution d’un script, de confirmer que vous souhaitez bien l’exécuter.
  • RemoteSigned — Vous pouvez exécuter vos propres scripts ou les scripts signés par un développeur de confiance.
  • Unrestricted — Vous pouvez exécuter tous les scripts que vous voulez.

Pour commencer à travailler avec PowerShell, changez le paramétrage de cette politique en la passant de Restricted à RemoteSigned, à l’aide de la commande Set-ExecutionPolicy RemoteSigned :

PowerShell Cmdlets

À propos des Cmdlets

Un cmdlet est une commande PowerShell qui a une fonction prédéfinie, comme un opérateur dans un langage de programmation. Voici quelques informations importantes concernant les cmdlets :

  • Il existe des cmdlets système, utilisateur et personnalisés.
  • Les cmdlets fournissent des résultats sous forme d’objet ou de tableau d’objets.
  • Les cmdlets peuvent obtenir des données à analyser ou transférer des données vers un autre cmdlet par le biais de canaux (je reviendrai sur ces canaux – ou pipes – dans un instant).
  • Les cmdlets sont « insensibles à la casse ». C’est-à-dire que les majuscules et minuscules n’ont aucune importance, vous pouvez tout aussi bien taper « Get-ADUser », « get-aduser » ou « gEt-AdUsEr ».
  • Si vous voulez utiliser plusieurs cmdlets dans une même chaîne, vous devez les séparer par un point-virgule (;).

Format de cmdlet

Un cmdlet se compose toujours d’un verbe (ou d’un mot qui fait office de verbe) et d’un nom, séparés par un trait d’union (c’est la règle « verbe-nom »). Voici quelques exemples de verbes :

  • Get — pour obtenir quelque chose
  • Set — pour définir quelque chose
  • Start — pour exécuter quelque chose
  • Stop — pour arrêter quelque chose en cours d’exécution
  • Out — pour générer quelque chose
  • New — pour créer quelque chose (« new » n’est pas un verbe, mais il fonctionne comme un verbe)

Pour vous exercer, essayez d’exécuter les cmdlets suivants :

  • Get-Process — affiche les processus en cours d’exécution sur votre ordinateur :

  • Get-Service — affiche la liste des services et leur état
  • Get-Content — affiche le contenu du fichier spécifié (par exemple, Get-Content C:\Windows\System32\drivers\etc\hosts)

Cmdlets disponibles

Bonne nouvelle : vous n’avez pas à mémoriser tous les cmdlets. Vous pouvez afficher la liste de tous les cmdlets en exécutant le cmdlet Get-Help-Category, qui renvoie ce qui suit :

Vous pouvez également créer vos propres cmdlets personnalisés.

Paramètres

Chaque cmdlet est assorti de plusieurs paramètres qui permettent de personnaliser son action. Dès que vous avez tapé un cmdlet et un trait d’union (-), l’ISE PowerShell propose automatiquement tous les paramètres valides et leurs types:

Par exemple, le cmdlet suivant affiche tous les services dont le nom commence par « W » :

Get-Service -Name W*

Si vous oubliez les paramètres d’un cmdlet, utilisez un script comme ci-dessous, qui affiche les paramètres du cmdlet Get-Process :

Get-Process | Get-Member

Si vous ne trouvez toujours pas le cmdlet dont vous avez besoin, vérifiez que votre aide est à jour et obtenez des exemples relatifs au cmdlet qui vous intéresse (par exemple Get-Process) en utilisant un script comme celui-ci :

Update-Help #to update the help data
Get-Help Get-Process -Examples

Pseudonymes

Vous pouvez également utiliser des alias, qui sont des noms de cmdlet abrégés. Par exemple, au lieu de saisir « Get-Help », vous pouvez vous contenter de « Help ». Essayez d’exécuter les deux commandes suivantes et voyez si vous obtenez le même résultat :

  • Start-Process notepad
  • start notepad

De même, pour arrêter le processus, vous pouvez utiliser l’une des commandes suivantes :

  • Stop-ProcessName notepad
  • sppsName notepad

Pour afficher tous les alias, exécutez le cmdlet Get-Alias.

Commentaires

Le fait de laisser des commentaires dans un script vous aidera – ainsi que vos collègues – à mieux comprendre ce que fait le script concerné. Un commentaire de type chaîne est une ligne simple qui commence par le signe dièse (#), alors que les commentaires de type bloc commencent et finissent par des signes dièse et des crochets et occupent plusieurs lignes.

Tuyaux

Un canal permet de transférer des données d’un cmdlet à un autre. Précédemment, j’ai utilisé un canal pour obtenir toutes les propriétés d’un objet.

Si, par exemple, vous exécutez le script suivant, vous obtiendrez tous les services triés selon leur état :

Get-Service | Sort-Object -property Status

Vous pouvez également utiliser un canal pour envoyer du texte dans un fichier à l’aide d’un script comme le suivant :

"Hello, World!" | Out-File C:\ps\test.txt

Vous pouvez utiliser plusieurs canaux. Par exemple, le script suivant dresse la liste de tous les services, le premier canal excluant les services arrêtés et le second limitant la liste aux noms d’affichage :

Get-Service | WHERE {$_.status -eq "Running"} | SELECT displayname
# “$_.” defines current element in the pipe

Résumé

Résumons rapidement les points clés de ce didacticiel sur Windows PowerShell. Vous savez à présent comment exécuter PowerShell, comment changer la politique d’exécution, ce qu’est un cmdlet, comment transmettre des données en utilisant un canal et comment obtenir les propriétés des objets. Gardez à l’esprit que si vous oubliez quelque chose, vous pouvez toujours utiliser le cmdlet Get-Help.

J’espère que vous avez trouvé utile ce didacticiel PowerShell pour débutants !

Dans les parties suivantes de ce didacticiel gratuit consacré à PowerShell, j’aborderai les variables, les tableaux et les cycles, qui sont utilisés dans les scripts PowerShell pour simplifier l’administration des serveurs Windows.

En attendant, vous pouvez consulter les scripts PowerShell suivants, qui permettent aux professionnels de l’informatique d’effectuer des tâches spécifiques :

  1. Comment exporter les membres d’un groupe AD particulier
  2. Comment rappeler aux utilisateurs de modifier leurs mots de passe avant qu’ils n’expirent
  3. Comment trouver l’origine du verrouillage d’un compte
  4. Comment découvrir tous les événements de verrouillage de compte
  5. Comment trouver des ordinateurs inactifs dans Active Directory ?
  6. Comment gérer les listes de contrôle d’accès (ACL) au système de fichiers avec les scripts PowerShell
  7. Comment obtenir une liste des utilisateurs AD dont les mots de passe n’expirent jamais
  8. Comment créer de nouveaux utilisateurs d’Active Directory avec PowerShell
  9. Comment ajouter, supprimer et modifier des utilisateurs et groupes locaux avec PowerShell
  10. Comment obtenir, modifier, créer et supprimer des clés de registre avec PowerShell
  11. Protection contre les logiciels ransomwares à l’aide de FSRM et PowerShell
  12. Gestion des fichiers avec PowerShell
  13. Les dix commandes les plus utiles d’Office 365 PowerShell
  14. Comment créer, supprimer, renommer, désactiver et associer des ordinateurs dans AD à l’aide de PowerShell
  15. Gérer les OUs et déplacer leurs objets avec PowerShell

Si vous venez de commancer d’apprendre PowerShell, nous vous conseillons de jeter un coup d’oeil sur les ressources suivantes :