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.