Commandes essentielles
Navigation dans le système de fichiers
# Afficher le répertoire courant
Get-Location # ou pwd
# Changer de répertoire
Set-Location C:\Users # ou cd C:\Users
# Aller au répertoire parent
cd ..
# Aller au répertoire personnel
cd ~
# Aller au répertoire précédent
cd -
Gestion des fichiers et dossiers
Lister le contenu
# Lister les fichiers du répertoire courant
Get-ChildItem # ou ls / dir
# Lister avec les fichiers cachés
Get-ChildItem -Force
# Lister récursivement
Get-ChildItem -Recurse
# Filtrer par extension
Get-ChildItem -Filter "*.txt"
Get-ChildItem *.json
# Lister uniquement les dossiers
Get-ChildItem -Directory
# Lister uniquement les fichiers
Get-ChildItem -File
Créer, copier, déplacer, supprimer
# Créer un dossier
New-Item -ItemType Directory -Name "mon-dossier"
mkdir mon-dossier # Alias pratique
# Créer un fichier
New-Item -ItemType File -Name "fichier.txt"
New-Item fichier.txt # Version courte
# Créer un fichier avec du contenu
"Bonjour PowerShell" | Out-File fichier.txt
# Copier
Copy-Item fichier.txt copie.txt
Copy-Item -Recurse dossier/ copie-dossier/
# Déplacer / Renommer
Move-Item fichier.txt nouveau-nom.txt
Move-Item fichier.txt C:\autre-dossier\
# Supprimer
Remove-Item fichier.txt
Remove-Item -Recurse -Force dossier/ # Supprimer un dossier et son contenu
Lire et écrire dans des fichiers
# Lire le contenu d'un fichier
Get-Content fichier.txt # ou cat fichier.txt
# Lire les 5 premières lignes
Get-Content fichier.txt -Head 5
# Lire les 3 dernières lignes
Get-Content fichier.txt -Tail 3
# Écrire dans un fichier (écrase le contenu)
"Nouveau contenu" | Out-File fichier.txt
Set-Content fichier.txt "Nouveau contenu"
# Ajouter à la fin d'un fichier
"Ligne supplémentaire" | Add-Content fichier.txt
Recherche
# Chercher du texte dans un fichier (équivalent de grep)
Select-String -Path "*.txt" -Pattern "erreur"
# Recherche récursive dans tous les fichiers
Get-ChildItem -Recurse -File | Select-String "TODO"
# Chercher un fichier par nom
Get-ChildItem -Recurse -Filter "config.json"
Variables et types de base
# Déclarer une variable
$nom = "PowerShell"
$version = 7
$actif = $true
# Afficher une variable
Write-Output $nom
echo $nom # Alias
$nom # Affichage direct dans le terminal
# Interpolation de chaînes (guillemets doubles uniquement)
"Bonjour, je suis $nom version $version"
# Résultat : Bonjour, je suis PowerShell version 7
# Chaîne littérale (guillemets simples = pas d'interpolation)
'La variable $nom ne sera pas remplacée'
# Vérifier le type d'une variable
$nom.GetType()
# Variables d'environnement
$env:PATH
$env:USERNAME
$env:USERPROFILE
Gestion des processus
# Lister tous les processus
Get-Process
# Chercher un processus par nom
Get-Process -Name "node"
Get-Process node # Version courte
# Trouver un processus qui utilise un port spécifique
Get-NetTCPConnection -LocalPort 3000
# Arrêter un processus par nom
Stop-Process -Name "node"
# Arrêter un processus par PID
Stop-Process -Id 12345
# Forcer l'arrêt
Stop-Process -Name "node" -Force
Gestion des services
# Lister les services
Get-Service
# Chercher un service
Get-Service -Name "wuauserv" # Windows Update
# Démarrer / Arrêter un service (nécessite admin)
Start-Service -Name "wuauserv"
Stop-Service -Name "wuauserv"
Restart-Service -Name "wuauserv"
Opérateurs de comparaison
PowerShell utilise des opérateurs textuels (pas les symboles <, >) :
# Égalité
5 -eq 5 # True (equal)
5 -ne 3 # True (not equal)
# Comparaison
10 -gt 5 # True (greater than)
3 -lt 7 # True (less than)
5 -ge 5 # True (greater or equal)
5 -le 5 # True (less or equal)
# Correspondance de texte
"PowerShell" -like "Power*" # True (wildcard)
"PowerShell" -match "^Power" # True (regex)
# Exemple concret : filtrer les gros fichiers
Get-ChildItem | Where-Object { $_.Length -gt 1MB }
Formatage de la sortie
# Tableau (par défaut)
Get-Process | Format-Table Name, CPU, WorkingSet64
# Liste détaillée
Get-Process | Format-List *
# Exporter en CSV
Get-Process | Export-Csv processes.csv -NoTypeInformation
# Exporter en JSON
Get-Process | ConvertTo-Json | Out-File processes.json
# Affichage interactif avec grille
Get-Process | Out-GridView