Cours de PowerShell en PDF (Intermédiaire)
PowerShell : Ce qu'il faut savoir. Environnement de scripting et d'automatisation développé par Microsoft, permettant aux administrateurs systèmes de gérer tâches et configurations sur Windows et, depuis PowerShell 7, sur d'autres plateformes. Ce support PDF gratuit s'adresse à des profils souhaitant automatiser l'administration système, localement ou de façon multiplateforme.
Auteur : Jean‑Pierre Moreau — Administration IT. Document de 28 pages.
Pourquoi choisir PowerShell pour l'automatisation système ?
Le pipeline et la manipulation d'objets .NET rendent les traitements plus robustes que les chaînes textuelles : variables et sorties sont des objets dotés de propriétés et méthodes, ce qui facilite la sélection, le filtrage et la transformation des données. Ces capacités conviennent à l'automatisation Windows, à l'orchestration de services et à des scénarios multiplateforme, avec des scripts réutilisables et testables.
Contenu détaillé : Des cmdlets à la gestion des objets
Utilisation des cmdlets, exécution et débogage de scripts, gestion des objets et bonnes pratiques de sécurité. Une section dédiée présente la Programmation orientée objet appliquée pour exploiter propriétés et méthodes d'objets système dans des traitements avancés et modulaires. Exemple pratique inclus pour illustrer la manipulation d'objets et la structuration de modules réutilisables.
Variables comme objets nommés : Dans PowerShell tout est objet : une variable peut contenir un objet complexe avec propriétés et méthodes. Exemple de création d'une variable objet pour stocker les informations d'un service et accéder à sa propriété Status :
$svc = Get-Service -Name 'Spooler'
$svc.Status
$svc | Select-Object Name, Status
Prérequis pour ce cours
- Connaissance de l'invite de commandes Windows (commandes de base, redirection et pipes).
- Notions de variables et structures de contrôle (if, boucles) dans un langage de script.
- Compréhension basique des systèmes de fichiers et des permissions sous Windows.
- Familiarité avec les concepts réseau élémentaires (IP, DNS, partage de fichiers) utile pour l'administration distante.
- Public cible : étudiants en BTS SIO ou Licence Professionnelle informatique, techniciens et administrateurs souhaitant approfondir les scripts d'administration.
Cas d'usage pratiques
Exemples conçus pour produire des outils réutilisables adaptés à des environnements de taille moyenne à grande, avec attention à la sécurité et à la maintenance.
- Administration d'Active Directory : gestion des comptes, des groupes et des unités organisationnelles via les modules AD pour provisioning et rapports.
- Gestion de serveurs distants : exécution de commandes à distance, collecte d'état et orchestration de tâches sur un parc hétérogène.
- Automatisation de maintenance : sauvegardes planifiées, snapshots et tâches de maintenance automatisées pour réduire les interventions manuelles.
Scripts pour l'administration système (Active Directory/Windows Server)
Automatisation de la création et maintenance d'objets AD (utilisateurs, groupes, GPO) et administration de Windows Server via les modules dédiés (RSAT, ActiveDirectory). L'usage d'environnements de prototypage comme PowerShell ISE ou éditeurs modernes accélère le test et le débogage des scripts.
PowerShell Core et Multiplateforme
PowerShell Core (PowerShell 7+) offre compatibilité multiplateforme : Linux et macOS sont pris en charge via l'exécutable pwsh. Les cmdlets peuvent être utilisés de manière similaire, avec attention aux chemins, services et modules spécifiques à chaque OS. Ce support inclut conseils d'adaptation pour scripts d'automatisation Windows Server vers des environnements hétérogènes et mentionne les outils de gestion distants compatibles.
Top 10 des cmdlets PowerShell essentiels
Tableau synthétique pour repérer rapidement les commandes fréquemment utilisées en administration système et pour démarrer des scripts d'automatisation.
| Cmdlet | Fonction |
|---|---|
| Get-Service | Récupère l'état des services système |
| Get-Process | Liste les processus en cours |
| Get-ChildItem | Parcourt et liste les fichiers et dossiers |
| Get-Content | Affiche le contenu d'un fichier |
| Get-Command | Recherche des cmdlets et fonctions disponibles |
| Get-Help | Affiche l'aide et exemples d'utilisation |
| Get-Item | Accède à un élément du système de fichiers |
| Set-Location | Change le répertoire courant |
| Copy-Item | Copie fichiers et objets |
| Remove-Item | Supprime fichiers ou objets |
Liste de commandes / Cheat Sheet
Rappel rapide d'une sélection d'outils utiles en administration et leurs alias usuels pour accélérer l'écriture de commandes interactives.
| Cmdlet | Alias(s) | Usage |
|---|---|---|
| Get-Service | gsv | Récupérer l'état des services |
| Get-Process | gps | Listes de processus |
| Get-ChildItem | gci, ls, dir | Parcourir répertoires |
| Get-Content | gc, type, cat | Lire contenu de fichiers |
| Get-Command | gcm | Trouver cmdlets |
| Get-Help | help, man | Consulter l'aide intégrée |
| Get-Item | gi | Accéder à un élément |
| Set-Location | sl, cd | Changer de répertoire |
| Copy-Item | cp, copy | Copier fichiers/objets |
| Move-Item | mv | Déplacer fichiers/objets |
| Remove-Item | rm, del, ri | Supprimer fichiers/objets |
| New-Item | ni | Créer fichiers/objets |
| Select-Object | select | Sélectionner propriétés d'objets |
| Where-Object | where | Filtrer objets selon condition |
| ForEach-Object | foreach, % | Appliquer une action à chaque objet |
Comparatif : PowerShell vs Bash et VBScript
PowerShell se distingue par le modèle objet : les pipelines transportent des objets structurés, contrairement à Bash où les flux sont textuels. VBScript reste orienté texte et COM, limitant la modularité et la réutilisabilité. Pour l'automatisation Windows Server, PowerShell simplifie le traitement ciblé des ressources système et l'intégration avec .NET, tandis que Bash reste pertinent côté Unix pour opérations textuelles et scripting système.
Installation et configuration de PowerShell 7
PowerShell 7 s'installe via packages natifs sur Linux, macOS et Windows (MSI/winget). Après installation, vérifier la version avec $PSVersionTable.PSVersion ou pwsh --version. Configurer la politique d'exécution adaptée au contexte et installer les modules nécessaires pour l'automatisation Windows Server ou la gestion multiplateforme. Conseils fournis pour la gestion de modules et l'isolation de l'environnement de développement.
Concepts avancés abordés
- Manipulation d'objets nommés et pipeline.
- Gestion des alias et modularité des scripts.
- Utilisation des pipelines pour le traitement de données.
❓ Foire Aux Questions (FAQ)
Qu'est-ce que PowerShell ?
Environnement de scripting et d'automatisation combinant cmdlets, pipeline et objets .NET pour administrer et configurer des systèmes et automatiser des processus complexes.
Comment commencer avec PowerShell ?
Installer la version adaptée (PowerShell 7 pour les environnements multiplateforme), exécuter des cmdlets simples et tester des scripts courts en mode interactif avant d'industrialiser des modules ou fonctions réutilisables.
PowerShell est-il orienté objet ?
Oui, il manipule des objets .NET, ce qui permet une gestion structurée et fine des données système.
Comment vérifier ma version de PowerShell ?
Utiliser $PSVersionTable.PSVersion dans une session ou, pour PowerShell 7+, exécuter pwsh --version.
$PSVersionTable.PSVersion
# ou
pwsh --version