Points Essentiels à Retenir
- PowerShell est un langage de script conçu pour faciliter l’automatisation des tâches informatiques.
- Les cmdlets, ou applets de commande, sont des instructions PowerShell avec une fonction unique. Utilisez « Get-Command » pour afficher la liste des commandes disponibles.
- PowerShell est compatible avec les systèmes d’exploitation Windows, macOS et Linux.
PowerShell est un outil puissant qui simplifie l’automatisation des opérations informatiques. Apprenez à l’utiliser pour élaborer vos propres scripts sur votre ordinateur Windows.
Introduction au Scripting PowerShell
Pour démarrer la création de scripts PowerShell sur Windows, trois concepts sont fondamentaux :
- Cmdlets (Applets de commande) : Des commandes spécialisées avec une fonction précise.
- Paramètres : Ils permettent de définir les actions des cmdlets, en spécifiant quoi, quand, où et comment elles opèrent.
- Pipeline : Il connecte la sortie d’une cmdlet (avec ses paramètres) à d’autres cmdlets ou fonctions.
En combinant ces trois éléments, vous pouvez élaborer des scripts basiques qui automatisent des tâches.
Voici un exemple montrant comment plusieurs cmdlets peuvent être combinées pour réaliser une opération :
Pour exécuter cet enchaînement d’actions dans PowerShell, vous utiliserez une commande ressemblant à celle-ci :
Get-Object Potato | Peel-Object | Chop-Object Chips| Cook-Object DeepFry `
| Place-Object Bowl
Les Cmdlets en Détail
Comme tout langage de script, PowerShell intègre des commandes pré-définies pour manipuler des objets et exécuter diverses tâches. Ces instructions de base sont appelées cmdlets.
Les cmdlets (prononcées « command-lets ») sont des commandes petites et ciblées, utilisées dans l’environnement PowerShell grâce à l’extension .dll. Ce sont des fragments de code légers et rapides à exécuter, de par leur nature compilée, contrairement aux fonctions.
PowerShell propose des milliers de cmdlets. Il n’est pas nécessaire de toutes les connaître pour commencer. Commencez par les cmdlets les plus courantes et enrichissez vos connaissances au fur et à mesure de votre apprentissage. Pour afficher les cmdlets disponibles sur votre système, utilisez :
Get-Command
En parcourant les résultats, vous noterez qu’elles suivent une convention de nommage verbe-nom, facilitant ainsi leur compréhension.
Par exemple, Get-Command liste les commandes disponibles, Get-Process affiche les processus en cours, et Copy-Item copie des fichiers vers un emplacement spécifique.
Les cmdlets sont documentées avec des exemples, des instructions d’utilisation et des descriptions de leurs fonctionnalités.
Pour plus d’informations sur une cmdlet spécifique et son utilisation, exécutez :
Get-Help <nom-de-la-cmdlet>
Explication des Paramètres PowerShell
Les cmdlets peuvent accepter des paramètres qui modifient leur comportement. Lors de l’exécution d’une cmdlet, l’ajout de paramètres permet de préciser quoi, quand, où et comment elle doit opérer.
Par exemple, Get-Process affiche la liste de tous les processus actifs du système d’exploitation :
Mais si vous souhaitez cibler un processus particulier ? C’est possible en utilisant des paramètres. Par exemple, pour afficher uniquement les processus Slack, utilisez le paramètre Name avec la cmdlet Get-Process :
Get-Process -Name Slack
Seuls les processus contenant « slack » dans leur nom seront affichés :
Certains paramètres sont dits « positionnels », leur nom est facultatif. Ainsi, Get-Process -Name Slack est équivalent à Get-Process Slack.
Chaque cmdlet accepte différents types de paramètres. La commande Get-Help permet de consulter les paramètres disponibles d’une cmdlet, dans la section SYNTAXE.
Get-Help Get-Process
Vous y trouverez toutes les façons d’exécuter la cmdlet :
Ici, Get-Process accepte des paramètres comme Name, Id, ComputerName, Module, FileVersionInfo, et d’autres paramètres courants. Les symboles ont la signification suivante :
Symbole | Dénomination | Signification |
---|---|---|
Vide | Le paramètre ne prend pas d’entrée. | |
– | Tiret | Indique le nom du paramètre. |
<> | Chevrons | Espace réservé pour un texte. |
[] | Crochets | Paramètre acceptant une ou plusieurs valeurs. |
{} | Accolades | Le paramètre accepte un ensemble de valeurs. |
Les paramètres qui acceptent des données préciseront leur type, comme une chaîne de caractères, un entier, un booléen ou une date. Par exemple, ceci :
Get-Process [[-Name] <string[]>]
Signifie que le paramètre Name accepte une ou plusieurs chaînes de caractères. Alors que ceci :
Get-Process -Id <int[]>
Indique que le paramètre Id accepte un ou plusieurs entiers.
Dans l’exemple précédent, Get-Process utilisait le paramètre Name pour affiner les résultats. Vous pouvez affiner davantage en utilisant le paramètre ID, qui exige un entier, comme spécifié dans sa syntaxe.
Get-Process -Id 3016
Seul le processus correspondant à cet ID devrait alors apparaître :
Création d’un Pipeline
PowerShell traite toutes les données comme des objets. Dans un script, ces objets transitent par une série de cmdlets, liées par une barre verticale ( | ). Le choix des cmdlets adéquates et leur agencement dans un pipeline logique sont essentiels pour l’efficacité du script.
Imaginons la création d’un script qui affiche les cinq fichiers les plus volumineux d’un dossier. Bien qu’il existe des méthodes plus sophistiquées, la logique suivante est facile à appréhender :
Pour réaliser cela dans PowerShell, on utilise un pipeline ressemblant à ceci :
Get-ChildItem -Path "C:\Directory" -File | Sort-Object Length -Descending `
| Select-Object -First 5 | Format-Table Name, Length -AutoSize
Enregistrer le Pipeline en tant que Script PS1
Maintenant que nous avons un pipeline fonctionnel, nous pouvons l’enregistrer dans un fichier de script PS1 pour éviter de le retaper à chaque utilisation.
La méthode la plus simple consiste à coller votre script dans le Bloc-notes et à l’enregistrer avec l’extension .ps1.
Une fois le fichier PS1 créé, vous pouvez l’exécuter dans PowerShell en tapant ./NomDuScript.ps1 :
Félicitations ! Vous êtes désormais en mesure de créer vos propres scripts PowerShell PS1.
PowerShell Disponible sur Linux et macOS
PowerShell est un excellent langage de script pour débutants. Initialement limité à Windows, la version actualisée de PowerShell est aussi compatible avec macOS et de nombreuses distributions Linux. Cela rend PowerShell plus attractif, car les compétences acquises sous Windows sont transposables vers d’autres environnements.