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 powershell et 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.