Introduction à PowerShell
Qu'est-ce que PowerShell ?
PowerShell est un shell en ligne de commande et un langage de script développé par Microsoft. Contrairement à l'invite de commandes classique (cmd.exe), PowerShell manipule des objets et non de simples chaînes de texte, ce qui le rend beaucoup plus puissant.
PowerShell vs CMD vs Bash
| Aspect | CMD (cmd.exe) | PowerShell | Bash (Linux/Mac) |
|---|---|---|---|
| Type de données | Texte brut | Objets .NET | Texte brut |
| Syntaxe | Commandes DOS | Verbe-Nom (Get-Process) | Commandes Unix |
| Scripting | Fichiers .bat limités | Scripts .ps1 complets | Scripts .sh |
| Disponibilité | Windows uniquement | Windows, Linux, Mac | Linux, Mac (WSL sur Windows) |
| Puissance | Basique | Très avancé | Avancé |
Pourquoi apprendre PowerShell ?
- Natif sous Windows : préinstallé sur toutes les versions modernes
- Automatisation : automatisez des tâches répétitives facilement
- Administration système : gérez des serveurs, services, processus
- Développement : complément idéal pour les développeurs sous Windows
- Cross-platform : PowerShell 7+ fonctionne aussi sur Linux et Mac
Ouvrir PowerShell
Méthode rapide
- Win + X puis sélectionner Terminal ou PowerShell
- Win + R puis taper
powershellet Entrée - Chercher "PowerShell" dans le menu Démarrer
Windows Terminal (recommandé)
Windows Terminal est l'application moderne qui regroupe PowerShell, CMD et WSL dans une seule fenêtre avec des onglets. Si vous ne l'avez pas encore :
# Installer Windows Terminal depuis le Microsoft Store
# ou via winget :
winget install Microsoft.WindowsTerminal
Versions de PowerShell
Il existe deux versions principales :
- Windows PowerShell 5.1 : préinstallé sur Windows, basé sur .NET Framework
- PowerShell 7+ : version moderne, cross-platform, basé sur .NET Core
# Vérifier votre version
$PSVersionTable.PSVersion
# Installer PowerShell 7 via winget
winget install Microsoft.PowerShell
Premiers pas
L'anatomie d'une commande PowerShell
Les commandes PowerShell suivent la convention Verbe-Nom :
Get-Process # Verbe: Get, Nom: Process
Set-Location # Verbe: Set, Nom: Location
New-Item # Verbe: New, Nom: Item
Remove-Item # Verbe: Remove, Nom: Item
Les alias : des raccourcis pratiques
PowerShell fournit des alias pour les commandes courantes, compatibles avec les habitudes CMD et Unix :
# Ces commandes sont équivalentes :
Get-ChildItem # Nom complet PowerShell
dir # Alias CMD
ls # Alias Unix
# Autres alias courants :
cd → Set-Location
cls → Clear-Host
cp → Copy-Item
mv → Move-Item
rm → Remove-Item
cat → Get-Content
echo → Write-Output
Pour voir tous les alias disponibles :
Get-Alias
Obtenir de l'aide
PowerShell a un système d'aide intégré très complet :
# Aide sur une commande
Get-Help Get-Process
# Aide détaillée avec exemples
Get-Help Get-Process -Examples
# Mettre à jour l'aide (nécessite les droits admin)
Update-Help
Le pipeline : la force de PowerShell
Le pipeline (|) permet de chaîner des commandes en passant le résultat d'une commande à la suivante :
# Lister les processus triés par utilisation mémoire
Get-Process | Sort-Object WorkingSet64 -Descending | Select-Object -First 10
# Trouver les fichiers .log de plus de 1 Mo
Get-ChildItem -Recurse -Filter "*.log" | Where-Object { $_.Length -gt 1MB }
La différence clé avec Bash : le pipeline transmet des objets et non du texte. Vous accédez directement aux propriétés ($_.Length, $_.Name) sans parser du texte.