Comprendre la logique objet de PowerShell, enchaîner des commandes avec le pipeline, écrire et exécuter un script.ps1.
1. cmd ou PowerShell ?
Invite de commandes (cmd)
PowerShell
Âge
Héritée de MS-DOS
Moderne (2006), multiplateforme depuis PowerShell 7
Manipule
Du texte
Des objets (avec propriétés et méthodes)
Scripts
.bat / .cmd
.ps1
Exemples
dir, ipconfig, ping, copy
Get-ChildItem, Get-Process, Get-Service
Les commandes classiques (ipconfig, ping, tracert, nslookup) marchent dans les deux. Terminal Windows (wt) regroupe cmd, PowerShell et WSL dans des onglets.
PowerShell 7 sous Linux (Arch : AUR powershell-bin ; Pop!_OS : paquet powershell du dépôt Microsoft) → pwsh.
2. La syntaxe Verbe-Nom
Toutes les commandes (cmdlets) s’écrivent Verbe-Nom : Get-Process, Stop-Service, New-Item, Set-Location.
Verbe
Sens
Get
Obtenir / afficher
Set
Modifier
New
Créer
Remove
Supprimer
Start / Stop / Restart
Démarrer / arrêter / redémarrer
Test
Vérifier (ex. Test-Connection, Test-Path)
Get-Command *service* # trouver les commandes qui parlent de "service"Get-Help Get-Process -Examples # exemples d'utilisationUpdate-Help # télécharger l'aide complète (admin)Get-Alias ls # ls est un alias de Get-ChildItem
3. Les commandes du quotidien
Besoin
PowerShell
Alias / équivalent
Lister
Get-ChildItem
ls, dir
Se déplacer
Set-Location C:\Temp
cd
Où suis-je
Get-Location
pwd
Lire un fichier
Get-Content fichier.txt -Tail 20
cat, type
Créer dossier / fichier
New-Item -ItemType Directory Projet / New-Item notes.txt
flowchart LR
A["Get-Process<br/>(tous les processus = objets)"] --> B["Sort-Object CPU -Descending<br/>(trier par CPU)"]
B --> C["Select-Object -First 5 Id, ProcessName<br/>(garder 5 objets, 2 propriétés)"]
C --> D["Format-Table<br/>(affichage)"]
Get-Process explorer # un processusGet-Process explorer | Format-List -Property * # TOUTES ses propriétésGet-Process | Sort-Object -Property CPU -Descending # trierGet-Process | Sort-Object -Property CPU -Descending | Select-Object -First 5 -Property Id, ProcessNameGet-Service | Where-Object Status -eq 'Stopped' # filtrerGet-ChildItem C:\Windows -File | Measure-Object -Property Length -Sum # somme des taillesGet-Process | Export-Csv processus.csv -NoTypeInformation -Encoding utf8 # exporter
Get-Member révèle ce que contient un objet : Get-Process | Get-Member. C'est LA commande pour découvrir quelles propriétés filtrer ou trier.
# top5.ps1 — les 5 processus les plus gourmands en CPUGet-Process | Sort-Object -Property CPU -Descending | Select-Object -First 5 -Property Id, ProcessName, CPU
.\top5.ps1
Si refusé (l’exécution de scripts est désactivée) :
Get-ExecutionPolicy -ListSet-ExecutionPolicy -Scope CurrentUser RemoteSigned # scripts locaux autorisés, ceux d'Internet doivent être signésUnblock-File .\script-telecharge.ps1 # débloquer un script téléchargé dont tu as vérifié le contenu
Set-ExecutionPolicy Unrestricted ou Bypass partout = mauvaise pratique. RemoteSigned sur ton utilisateur suffit.
7. Scripts fournis
scripts/windows/analyser_dossier.ps1 (exercice du cours, enrichi)