Introduction à PowerShell
Qu'est-ce que PowerShell ?
PowerShell est un shell et un moteur de scripting développé par Microsoft.
Il se distingue des autres shells (comme l'invite de commandes CMD sous Windows ou les shells Unix/Bash sous Linux) par :
- Une manipulation par objets : au lieu de retourner du texte brut, la plupart des commandes PowerShell retournent des objets .NET. Cela vous offre plus de flexibilité pour extraire et traiter des informations.
- Une syntaxe puissante : PowerShell facilite l'automatisation de tâches d'administration système, la gestion de configurations et l'orchestration de services.
- Une large compatibilité : initialement inclus avec Windows, PowerShell est désormais open source et fonctionne également sur macOS et Linux (PowerShell Core/PowerShell 7+).
2. Installation et premiers pas
Sur Windows
- Windows 10 et 11 : PowerShell est installé par défaut. Vous pouvez simplement rechercher "PowerShell" via le menu Démarrer.
- Versions plus anciennes : vous pouvez mettre à jour vers la dernière version de PowerShell (PowerShell 5.1 pour Windows 7/8, ou PowerShell 7+ pour les versions plus récentes). Le téléchargement s'effectue sur le site officiel de Microsoft (ou via le Microsoft Store pour Windows 10/11).
Sur macOS et Linux
- Il vous faudra installer PowerShell Core (7+). L'installation varie selon la distribution ou la version macOS ; consultez la documentation officielle pour les étapes exactes.
3. Lancer PowerShell
Sous Windows :
- Ouvrez le Menu Démarrer.
- Recherchez Windows PowerShell ou PowerShell 7 (selon la version installée).
- Cliquez sur l'application pour lancer la console.
Sous macOS / Linux :
- Ouvrez un terminal et tapez la commande pwsh (pour PowerShell 7+).
Astuce : Pour exécuter PowerShell avec des droits d'administrateur (ou "en tant qu'administrateur"), faites un clic droit sur l'icône PowerShell, puis sélectionnez "Exécuter en tant qu'administrateur".
4. Découverte de la console PowerShell
Lorsque vous ouvrez PowerShell, vous verrez un prompt similaire à :
- PS indique que vous êtes dans PowerShell.
- C:\Users\VotreNom> représente votre emplacement actuel (votre répertoire personnel sur Windows).
Exécuter votre première commande
Essayez la commande suivante :
Cette commande (alias dir ou ls) listera les fichiers et dossiers du répertoire courant.
5. Obtenir de l'aide : la commande Get-Help
PowerShell intègre un excellent système d'aide.
Pour en profiter pleinement :
- Mettez à jour les fichiers d'aide (facultatif mais recommandé) :
- Consultez l'aide d'une commande spécifique :
ou
Get-Help Get-ChildItem -Online
pour consulter la documentation en ligne.
Astuce : Vous pouvez aussi utiliser Get-Help -Examples pour voir rapidement des exemples pratiques.
6. Bases de la syntaxe PowerShell
6.1 Nom des commandes (cmdlets)
PowerShell utilise un schéma de nommage standard pour ses cmdlets (commandes internes) :
Verbe-Sujet
Exemples :
- Get-Process (récupère les processus en cours)
- Stop-Service (arrête un service)
- New-Item (crée un nouvel élément)
6.2 Paramètres
Les cmdlets prennent souvent des paramètres pour ajuster leur comportement. Par exemple :
Get-ChildItem -Path "C:\Windows" -Recurse
Ici :
- -Path indique le chemin à explorer,
- -Recurse indique qu'on souhaite parcourir tous les sous-dossiers.
6.3 Pipeline |
Le pipeline redirige la sortie d'une commande vers l'entrée d'une autre. C'est l'un des points forts de PowerShell. Par exemple :
Get-Process | Where-Object { $_.CPU -gt 10 }
- Get-Process retourne la liste de tous les processus en cours.
- | (pipeline) envoie cette liste à Where-Object, qui va filtrer pour ne garder que les processus dont la valeur de .CPU est supérieure à 10.
- $_ représente l'objet en cours de traitement dans le pipeline.
7. Variables et types de données
Les variables en PowerShell commencent par le symbole $.
Exemples :
# Déclaration et affectation d'une variable
$monTexte = "Bonjour, PowerShell !"
$monNombre = 42
# Affichage de la variable
Write-Host $monTexte
Write-Host "Le nombre est : $monNombre"
Types de données courants
- Chaînes de caractères (string) : ex. "Hello World"
- Entiers (int) : ex. 42
- Booléens (bool) : True ou False
- Tableaux / Lists (array) : ex. @(1,2,3) ou [int[]](1,2,3)
8. Les structures de contrôle
8.1 Conditions if, elseif, else
if ($monNombre -gt 50) {
Write-Host "Le nombre est supérieur à 50"
}
elseif ($monNombre -eq 42) {
Write-Host "Le nombre est égal à 42"
}
else {
Write-Host "Le nombre est inférieur à 50"
}
8.2 Boucles : for, foreach, while
for ($i = 0; $i -lt 5; $i++) {
Write-Host "i vaut : $i"
}
- foreach (pour parcourir un tableau ou liste) :
$nombres = 1..5 # Génère la suite 1,2,3,4,5
foreach ($num in $nombres) {
Write-Host "Numéro : $num"
}
- while (tant qu'une condition est vraie) :
$compteur = 3
while ($compteur -gt 0) {
Write-Host "Le compteur est à : $compteur"
$compteur--
}
9. Fonctions
Les fonctions permettent de réutiliser du code. On les déclare avec le mot-clé function.
function Bonjour($nom) {
Write-Host "Bonjour, $nom !"
}
Bonjour "Alice"
Bonjour "Bob"
Vous pouvez passer plusieurs paramètres ou renvoyer une valeur (à l'aide du mot-clé return ou en laissant la dernière valeur calculée dans la fonction).
10. Créer et exécuter un script PowerShell
Un script PowerShell est un fichier .ps1 qui contient vos commandes/logiciels d'automatisation.
- Créer un nouveau fichier :
- Ouvrez Visual Studio Code (ou un autre éditeur de texte adapté).
- Sauvegardez votre fichier sous l'extension .ps1 (ex. MonPremierScript.ps1).
- Écrire du code :
# MonPremierScript.ps1
Write-Host "Salut, c'est mon premier script !"
- Modifier la politique d'exécution (Execution Policy)
- Par défaut, Windows peut bloquer l'exécution de scripts non signés.
- Pour autoriser l'exécution locale de vos scripts, ouvrez PowerShell en tant qu'administrateur et exécutez :
Set-ExecutionPolicy RemoteSigned
ou
Set-ExecutionPolicy Unrestricted
- Confirmez la modification.
- (Ne baissez pas la politique d'exécution à 'Unrestricted' sauf si nécessaire et très temporairement, pour des raisons de sécurité).
- Exécuter le script :
- Dans PowerShell, placez-vous dans le dossier contenant votre script (cd C:\chemin\vers\MonDossier)
- Tapez .\MonPremierScript.ps1 pour l'exécuter.
11. Installation et utilisation de modules
Les modules PowerShell sont des bibliothèques de cmdlets, fonctions et autres ressources. Exemple :
- PSGallery est la galerie officielle où vous pouvez chercher et installer des modules.
- Pour installer un module (ex. Pester pour les tests) :
Install-Module -Name Pester
- Pour lister les modules installés :
Get-Module -ListAvailable
12. Bonnes pratiques
- Commentaires : utilisez # pour décrire ou documenter votre code.
- Nommage clair : préférez des noms de variables et de fonctions explicites ($cheminFichier, Test-Connexion) pour faciliter la compréhension.
- Testez par petites étapes : exécutez régulièrement vos commandes pour valider qu'elles fonctionnent avant de complexifier le script.
- Utilisez la commande Out-File ou Export-CSV pour sauvegarder vos résultats (fichiers journaux, rapports, etc.).
- Utilisez Try/Catch/Finally pour la gestion d'erreurs plus avancée.
13. Ressources pour aller plus loin