Qu'est-ce que PowerShell ?
PowerShell est le terminal moderne de Windows. Il remplace l'ancien cmd.exe et permet de gérer fichiers, processus, services, réseau, et bien plus, avec des commandes claires.
Depuis 2019, il existe aussi PowerShell Core (version 7+), disponible sur Windows, macOS et Linux.
Comment l'ouvrir sur Windows :
- Touche Windows → tapez "PowerShell" → ouvrir
- Clic droit sur le Bureau → "Ouvrir PowerShell ici"
- Windows + X → Terminal ou PowerShell
Deux syntaxes : cmdlets et alias
PowerShell utilise un format Verbe-Nom très lisible — par exemple Get-ChildItem pour lister les fichiers. Mais il accepte aussi des alias plus courts compatibles avec Linux/macOS :
| Alias court |
Cmdlet complet |
Signification |
ls ou dir |
Get-ChildItem |
Lister les fichiers |
cd |
Set-Location |
Changer de dossier |
pwd |
Get-Location |
Dossier courant |
cat |
Get-Content |
Lire un fichier |
echo |
Write-Output |
Afficher du texte |
cp |
Copy-Item |
Copier |
mv |
Move-Item |
Déplacer / renommer |
rm |
Remove-Item |
Supprimer |
ps |
Get-Process |
Processus actifs |
kill |
Stop-Process |
Arrêter un processus |
Les deux syntaxes fonctionnent. Dans vos scripts, préférez les cmdlets complets pour la lisibilité.
Navigation dans les fichiers
| Commande |
Description |
Exemple |
pwd |
Affiche le dossier courant |
pwd |
ls |
Liste les fichiers du dossier |
ls |
ls -Force |
Affiche aussi les fichiers cachés |
ls -Force |
ls -la |
Liste avec détails (taille, date) |
ls -la |
cd Bureau |
Accède au Bureau |
cd Bureau |
cd .. |
Remonte d'un niveau |
cd .. |
cd ~ |
Retourne au dossier personnel |
cd ~ |
cd C:/Users |
Accède à un chemin absolu |
cd C:/Users |
mkdir projets |
Crée un dossier |
mkdir projets |
mkdir -p a/b/c |
Crée des dossiers imbriqués |
mkdir -p app/src/css |
tree |
Affiche l'arborescence |
tree |
Gestion des fichiers
| Alias / Commande |
Description |
Exemple |
cp fichier.txt copie.txt |
Copie un fichier |
cp config.txt config.bak |
cp -Recurse src/ dest/ |
Copie un dossier entier |
cp -Recurse src/ backup/ |
mv ancien.txt nouveau.txt |
Renomme ou déplace |
mv notes.txt archives/ |
rm fichier.txt |
Supprime un fichier |
rm log.txt |
rm -Recurse -Force dossier |
Supprime un dossier entier |
rm -Recurse -Force cache/ |
New-Item fichier.txt |
Crée un fichier vide |
New-Item notes.txt |
New-Item -ItemType Directory |
Crée un dossier |
New-Item -ItemType Directory tmp |
Rename-Item a.txt b.txt |
Renomme un fichier |
Rename-Item notes.txt archive.txt |
Test-Path fichier.txt |
Vérifie si un fichier existe |
Test-Path config.json |
Get-Item fichier.txt |
Infos sur un fichier |
Get-Item script.ps1 |
Lecture et écriture de fichiers
| Commande |
Description |
Exemple |
cat fichier.txt |
Affiche le contenu d'un fichier |
cat config.txt |
Get-Content f.txt -Tail 20 |
Affiche les 20 dernières lignes |
Get-Content app.log -Tail 20 |
Get-Content f.txt -Wait |
Suit un fichier en temps réel |
Get-Content app.log -Wait |
Set-Content f.txt "texte" |
Écrit dans un fichier (écrase) |
Set-Content notes.txt "Bonjour" |
Add-Content f.txt "texte" |
Ajoute à la fin d'un fichier |
Add-Content log.txt "Ligne ajoutée" |
Out-File fichier.txt |
Redirige une sortie vers un fichier |
ls \| Out-File liste.txt |
echo "texte" |
Affiche du texte |
echo "Démarrage..." |
Recherche et filtrage
| Commande |
Description |
Exemple |
Select-String "erreur" f.txt |
Cherche du texte (équivalent grep) |
Select-String "error" app.log |
Select-String -i "erreur" |
Ignore la casse |
Select-String -CaseSensitive:$false "admin" users.txt |
Get-ChildItem -Filter "*.py" |
Cherche des fichiers par extension |
Get-ChildItem -Filter "*.py" |
Get-ChildItem -Recurse -Filter |
Cherche récursivement |
Get-ChildItem -Recurse -Filter "*.log" |
Where-Object |
Filtre les résultats d'une commande |
ls \| Where-Object {$_.Length -gt 1MB} |
Select-Object |
Sélectionne des propriétés |
ls \| Select-Object Name, Length |
Sort-Object |
Trie les résultats |
ls \| Sort-Object Length -Descending |
Measure-Object |
Calcule (nombre, somme, moyenne) |
cat f.txt \| Measure-Object -Line |
Group-Object |
Groupe par propriété |
ls \| Group-Object Extension |
Processus et services Windows
| Commande |
Description |
Exemple |
ps |
Liste tous les processus |
ps |
ps \| Sort-Object CPU -Desc |
Processus triés par CPU |
ps \| Sort-Object CPU -Descending |
Stop-Process -Name notepad |
Arrête un processus par nom |
Stop-Process -Name "chrome" |
Stop-Process -Id 1234 |
Arrête un processus par ID |
Stop-Process -Id 4532 |
Start-Process notepad |
Lance une application |
Start-Process "notepad" |
Get-Service |
Liste tous les services Windows |
Get-Service |
Get-Service -Status Running |
Uniquement les services actifs |
Get-Service -Status Running |
Start-Service W32Time |
Démarre un service |
Start-Service "Spooler" |
Stop-Service Spooler |
Arrête un service |
Stop-Service "Spooler" |
Restart-Service nginx |
Redémarre un service |
Restart-Service "nginx" |
Get-ComputerInfo |
Infos système complètes |
Get-ComputerInfo |
Get-Volume |
Espace disque disponible |
Get-Volume |
Get-Disk |
Infos sur les disques |
Get-Disk |
Get-EventLog -LogName System |
Logs Windows (ancienne méthode) |
Get-EventLog -LogName System -Newest 20 |
Get-WinEvent |
Logs Windows (méthode moderne) |
Get-WinEvent -LogName System -MaxEvents 20 |
Réseau
| Commande |
Description |
Exemple |
Test-Connection google.com |
Teste la connectivité (ping) |
Test-Connection 8.8.8.8 -Count 4 |
Test-NetConnection -Port 443 |
Teste si un port est ouvert |
Test-NetConnection google.com -Port 443 |
Invoke-WebRequest https://... |
Requête HTTP (équivalent curl) |
Invoke-WebRequest https://api.example.com |
Invoke-RestMethod https://... |
Appel API REST (retourne objet) |
Invoke-RestMethod https://api.example.com/users |
Get-NetAdapter |
Liste les interfaces réseau |
Get-NetAdapter |
Get-NetIPAddress |
Adresses IP de toutes les interfaces |
Get-NetIPAddress |
Get-NetIPAddress -AddressFamily IPv4 |
Uniquement les adresses IPv4 |
Get-NetIPAddress -AddressFamily IPv4 |
Resolve-DnsName google.com |
Résout un nom de domaine |
Resolve-DnsName afrodemique.com |
Get-NetTCPConnection |
Connexions TCP actives |
Get-NetTCPConnection -State Listen |
netstat -an |
Connexions réseau (ancienne méthode) |
netstat -an |
Aide et découverte
PowerShell a un système d'aide intégré très complet — utilisez-le en priorité !
| Commande |
Description |
Exemple |
Get-Help Get-Process |
Documentation d'une cmdlet |
Get-Help Get-Service |
Get-Help Get-Service -Examples |
Uniquement les exemples |
Get-Help Invoke-WebRequest -Examples |
Get-Help Get-Service -Full |
Documentation complète |
Get-Help Copy-Item -Full |
Get-Command |
Liste toutes les commandes disponibles |
Get-Command |
Get-Command *network* |
Cherche des commandes par mot-clé |
Get-Command *web* |
Get-Alias |
Liste tous les alias |
Get-Alias |
Get-Alias ls |
Trouve la cmdlet derrière un alias |
Get-Alias cat |
Get-Member |
Propriétés et méthodes d'un objet |
Get-Process \| Get-Member |
Update-Help |
Met à jour la documentation locale |
Update-Help |
Variables, conditions et boucles
# Définir une variable
$nom = "Trésor"
$budget = 500
# Afficher avec interpolation
Write-Output "Bonjour $nom, budget : $budget dollars"
# Condition if / elseif / else
if ($budget -gt 1000) {
Write-Output "Budget confortable"
} elseif ($budget -gt 200) {
Write-Output "Budget moyen"
} else {
Write-Output "Budget serré"
}
# Boucle foreach — traiter une liste de fichiers
foreach ($fichier in Get-ChildItem "*.txt") {
Write-Output "Fichier trouvé : $($fichier.Name)"
}
# Boucle for classique
for ($i = 1; $i -le 5; $i++) {
Write-Output "Étape $i"
}
# Pipeline — les 5 processus qui consomment le plus de mémoire
Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 5 Name, Id, WorkingSet
Opérateurs de comparaison PowerShell
| Opérateur |
Signification |
Exemple |
-eq |
Égal à |
$a -eq 5 |
-ne |
Différent de |
$a -ne 0 |
-gt |
Supérieur à |
$a -gt 10 |
-lt |
Inférieur à |
$a -lt 100 |
-ge |
Supérieur ou égal |
$a -ge 18 |
-le |
Inférieur ou égal |
$a -le 100 |
-like "*.txt" |
Correspond à un motif |
$f.Name -like "*.log" |
-match "regex" |
Correspond à une regex |
$s -match "error" |
-and |
ET logique |
$a -gt 0 -and $b -lt 10 |
-or |
OU logique |
$a -eq 1 -or $b -eq 2 |
-not |
Négation |
-not (Test-Path "fichier.txt") |
Comparaison : Linux / macOS vs PowerShell
| Linux / macOS |
PowerShell |
Description |
ls |
Get-ChildItem |
Lister les fichiers |
pwd |
Get-Location |
Dossier courant |
cd |
Set-Location |
Changer de dossier |
cat |
Get-Content |
Lire un fichier |
grep |
Select-String |
Chercher du texte |
ping |
Test-Connection |
Tester la connexion |
ps |
Get-Process |
Voir les processus |
kill |
Stop-Process |
Arrêter un processus |
curl |
Invoke-WebRequest |
Requêtes HTTP |
rm -rf |
Remove-Item -Recurse -Force |
Supprimer un dossier |
find . -name "*.py" |
Get-ChildItem -Recurse -Filter "*.py" |
Chercher des fichiers |
chmod |
(non applicable sur Windows) |
Permissions |
Exemple concret
Un technicien informatique à Kinshasa surveille et gère des postes Windows depuis son bureau :
# Voir les 5 processus qui consomment le plus de CPU
Get-Process | Sort-Object CPU -Descending | Select-Object -First 5 Name, Id, CPU
# Trouver les fichiers .log créés aujourd'hui
Get-ChildItem C:/inetpub/logs -Recurse -Filter "*.log" |
Where-Object { $_.LastWriteTime -gt (Get-Date).Date }
# Télécharger un fichier depuis Internet
Invoke-WebRequest https://example.com/setup.exe -OutFile setup.exe
# Vérifier si le port 443 est ouvert sur un serveur
Test-NetConnection 192.168.1.10 -Port 443
# Lister les services en cours d'exécution triés par nom
Get-Service | Where-Object { $_.Status -eq "Running" } | Sort-Object DisplayName
# Créer un dossier, un fichier, et y écrire
mkdir C:/projets/monapp
Set-Content C:/projets/monapp/config.txt "env=production"
cat C:/projets/monapp/config.txt
# Voir l'adresse IP de la machine
Get-NetIPAddress -AddressFamily IPv4 | Where-Object { $_.InterfaceAlias -ne "Loopback" }
À retenir
- PowerShell accepte les alias Linux (
ls, cd, cat, ps, kill)
Get-Help <commande> — la documentation est intégrée et très complète
| (pipe) fonctionne comme Linux — chaîne les cmdlets
Where-Object { condition } — filtre les résultats
Sort-Object, Select-Object — trier et choisir les colonnes
- Les opérateurs de comparaison utilisent
-eq, -gt, -lt (pas ==, >, <)
- PowerShell Core (v7+) est disponible sur Linux et macOS
Prochaine étape
Découvrez les commandes Linux et macOS pour administrer des serveurs — consultez Les commandes Linux essentielles.