PowerShell est l’outil d’administration incontournable pour tout professionnel IT travaillant dans l’écosystème Microsoft. Que vous soyez administrateur système, ingénieur DevOps ou utilisateur avancé de Windows, maîtriser PowerShell vous fera gagner un temps considérable et vous permettra d’automatiser des tâches répétitives. Voici les 50 commandes essentielles organisées par thématique, avec des exemples concrets, des explications en français et des cas d’usage réels.
Prérequis et configuration de PowerShell
Avant de commencer, assurez-vous d’utiliser PowerShell 7+ (cross-platform, plus performant) plutôt que Windows PowerShell 5.1. Installez-le via :
# Installer PowerShell 7 via winget
winget install Microsoft.PowerShell
# Vérifier la version installée
$PSVersionTable
# Configurer la politique d'exécution (nécessaire pour les scripts)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
1. Informations système
# 1. Informations complètes sur le système
Get-ComputerInfo
# 2. Informations condensées (OS, version, architecture)
Get-ComputerInfo | Select-Object CsName, WindowsProductName, OsArchitecture, OsVersion
# 3. Uptime du système (depuis le dernier démarrage)
(Get-Date) - (gcim Win32_OperatingSystem).LastBootUpTime
# 4. Informations sur le processeur
Get-CimInstance -ClassName Win32_Processor | Select-Object Name, NumberOfCores, MaxClockSpeed
# 5. Informations sur la RAM
Get-CimInstance -ClassName Win32_PhysicalMemory |
Measure-Object -Property Capacity -Sum |
Select-Object @{Name="RAM_Total_Go"; Expression={[math]::Round($_.Sum/1GB, 2)}}
# 6. Espace disque disponible
Get-PSDrive -PSProvider FileSystem | Select-Object Name, @{N="Utilisé(Go)";E={[math]::Round($_.Used/1GB,2)}}, @{N="Libre(Go)";E={[math]::Round($_.Free/1GB,2)}}
2. Gestion des processus
# 7. Lister tous les processus triés par consommation CPU
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10 Name, CPU, WorkingSet
# 8. Trouver un processus spécifique
Get-Process -Name "chrome" -ErrorAction SilentlyContinue
# 9. Arrêter un processus par nom
Stop-Process -Name "notepad" -Force
# 10. Arrêter tous les processus d'une application
Get-Process -Name "chrome" | Stop-Process -Force
# 11. Lancer une application
Start-Process -FilePath "notepad.exe"
# 12. Lancer une application avec élévation (administrateur)
Start-Process -FilePath "powershell.exe" -Verb RunAs
3. Gestion des services Windows
# 13. Lister tous les services en cours d'exécution
Get-Service | Where-Object {$_.Status -eq "Running"} | Sort-Object DisplayName
# 14. Vérifier le statut d'un service spécifique
Get-Service -Name "wuauserv" # Windows Update
# 15. Démarrer, arrêter, redémarrer un service
Start-Service -Name "Spooler"
Stop-Service -Name "Spooler" -Force
Restart-Service -Name "Spooler"
# 16. Configurer le démarrage automatique d'un service
Set-Service -Name "Spooler" -StartupType Automatic
# 17. Trouver les services en échec (stopped mais configurés en auto)
Get-Service | Where-Object {$_.StartType -eq "Automatic" -and $_.Status -eq "Stopped"}
4. Gestion des fichiers et dossiers
# 18. Lister le contenu d'un dossier (avec détails)
Get-ChildItem -Path "C:\Users\$env:USERNAME\Documents" -Recurse -File |
Sort-Object LastWriteTime -Descending |
Select-Object -First 20 Name, Length, LastWriteTime
# 19. Copier des fichiers avec progression
Copy-Item -Path "C:\Source\*" -Destination "D:\Backup\" -Recurse -Verbose
# 20. Déplacer des fichiers
Move-Item -Path "C:\Temp\rapport.pdf" -Destination "C:\Documents\Rapports\"
# 21. Supprimer des fichiers plus vieux que X jours
Get-ChildItem -Path "C:\Logs\" -File |
Where-Object {$_.LastWriteTime -lt (Get-Date).AddDays(-30)} |
Remove-Item -Force
# 22. Calculer la taille d'un dossier
$taille = (Get-ChildItem -Path "C:\Users\$env:USERNAME" -Recurse -ErrorAction SilentlyContinue |
Measure-Object -Property Length -Sum).Sum
[math]::Round($taille / 1GB, 2)
# 23. Rechercher des fichiers par nom ou extension
Get-ChildItem -Path "C:\" -Filter "*.log" -Recurse -ErrorAction SilentlyContinue
# 24. Créer une arborescence de dossiers
New-Item -Path "C:\Projets\2026\Client_ABC\Documents" -ItemType Directory -Force
5. Gestion du réseau
# 25. Afficher la configuration réseau complète
Get-NetIPConfiguration
# 26. Obtenir l'adresse IP publique
(Invoke-WebRequest -Uri "https://api.ipify.org" -UseBasicParsing).Content
# 27. Tester la connectivité (ping évolué)
Test-Connection -ComputerName "google.com" -Count 4
# 28. Tester si un port est ouvert
Test-NetConnection -ComputerName "smtp.office365.com" -Port 587
# 29. Afficher les connexions TCP actives
Get-NetTCPConnection |
Where-Object {$_.State -eq "Established"} |
Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort
# 30. Vider le cache DNS
Clear-DnsClientCache
# 31. Résoudre un nom DNS
Resolve-DnsName -Name "microsoft.com" -Type A
# 32. Afficher les cartes réseau et leur état
Get-NetAdapter | Select-Object Name, Status, MacAddress, LinkSpeed
6. Gestion des utilisateurs et groupes
# 33. Lister tous les utilisateurs locaux
Get-LocalUser | Select-Object Name, Enabled, LastLogon
# 34. Créer un utilisateur local
$password = Read-Host -AsSecureString -Prompt "Mot de passe"
New-LocalUser -Name "NouvelUtilisateur" -Password $password -FullName "Prénom Nom" -Description "Compte de test"
# 35. Ajouter un utilisateur à un groupe local
Add-LocalGroupMember -Group "Administrateurs" -Member "NouvelUtilisateur"
# 36. Désactiver un compte utilisateur
Disable-LocalUser -Name "AncienEmploye"
# 37. Lister les membres d'un groupe local
Get-LocalGroupMember -Group "Administrateurs"
# 38. Forcer le changement de mot de passe à la prochaine connexion (Active Directory)
# Nécessite le module RSAT ActiveDirectory
Set-ADUser -Identity "jdupont" -ChangePasswordAtLogon $true
7. Windows Update et gestion des mises à jour
# 39. Installer le module PSWindowsUpdate
Install-Module PSWindowsUpdate -Force -AllowClobber
# 40. Vérifier les mises à jour disponibles
Get-WindowsUpdate
# 41. Installer toutes les mises à jour disponibles automatiquement
Install-WindowsUpdate -AcceptAll -AutoReboot
# 42. Voir l'historique des mises à jour installées
Get-WUHistory | Select-Object -First 20 Title, Date, Result
# 43. Réinitialiser le cache Windows Update (résout de nombreux problèmes)
Stop-Service wuauserv, bits, cryptsvc -Force
Remove-Item "$env:SystemRoot\SoftwareDistribution\*" -Recurse -Force -ErrorAction SilentlyContinue
Start-Service wuauserv, bits, cryptsvc
8. Sécurité et antivirus
# 44. Vérifier l'état de Windows Defender
Get-MpComputerStatus | Select-Object AMRunningMode, AntivirusEnabled, RealTimeProtectionEnabled, TamperProtectionSource, NISEnabled
# 45. Lancer un scan rapide
Start-MpScan -ScanType QuickScan
# 46. Lancer un scan complet (longue durée)
Start-MpScan -ScanType FullScan
# 47. Mettre à jour les définitions antivirus
Update-MpSignature
# 48. Vérifier les événements de sécurité récents (connexions, échecs)
Get-WinEvent -LogName Security -MaxEvents 50 |
Where-Object {$_.Id -in @(4624, 4625, 4648)} |
Select-Object TimeCreated, Id, Message |
Format-List
9. Automatisation et scripts
# 49. Planifier une tâche automatique
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File C:\Scripts\sauvegarde.ps1"
$trigger = New-ScheduledTaskTrigger -Daily -At "02:00"
$settings = New-ScheduledTaskSettingsSet -ExecutionTimeLimit (New-TimeSpan -Hours 2)
Register-ScheduledTask -TaskName "SauvegardeNuit" -Action $action -Trigger $trigger -Settings $settings -RunLevel Highest
# 50. Générer un rapport système complet en HTML
$rapport = @"
<html><head><title>Rapport Système</title></head><body>
<h1>Rapport généré le $(Get-Date -Format 'dd/MM/yyyy HH:mm')</h1>
<h2>Informations système</h2>
$(Get-ComputerInfo | Select-Object CsName, WindowsProductName, OsArchitecture | ConvertTo-Html -Fragment)
<h2>Services actifs</h2>
$(Get-Service | Where-Object Status -eq Running | Select-Object Name, DisplayName | ConvertTo-Html -Fragment)
</body></html>
"@
$rapport | Out-File "C:\Rapports\rapport_systeme_$(Get-Date -Format 'yyyyMMdd').html" -Encoding UTF8
Write-Host "Rapport généré !" -ForegroundColor Green
Astuces PowerShell pour gagner du temps
Alias utiles
# PowerShell dispose d'alias pour les commandes courantes
ls # = Get-ChildItem
cd # = Set-Location
cp # = Copy-Item
mv # = Move-Item
rm # = Remove-Item
cat # = Get-Content
echo # = Write-Output
# Créer vos propres alias
Set-Alias -Name monalias -Value Get-Process
Pipeline et filtrage avancé
# Chaîner les commandes avec le pipeline ( | )
Get-Process | Where-Object {$_.CPU -gt 10} | Sort-Object CPU -Descending | Select-Object -First 5 Name, CPU
# Exporter vers CSV
Get-Process | Export-Csv -Path "C:\Temp\processus.csv" -NoTypeInformation -Encoding UTF8
# Exporter vers JSON
Get-Service | ConvertTo-Json | Out-File "C:\Temp\services.json" -Encoding UTF8
Gestion des erreurs dans les scripts
# Capturer et gérer les erreurs
try {
Get-Item "C:\FichierInexistant.txt" -ErrorAction Stop
} catch [System.IO.FileNotFoundException] {
Write-Warning "Fichier non trouvé : $_"
} catch {
Write-Error "Erreur inattendue : $_"
} finally {
Write-Host "Nettoyage effectué"
}
Ressources pour aller plus loin
Pour progresser en PowerShell, voici les meilleures ressources en français et en anglais :
- Documentation officielle Microsoft : learn.microsoft.com/fr-fr/powershell
- PowerShell Gallery : powershellgallery.com — milliers de modules et scripts
- SS64.com : référence rapide de toutes les commandes
- GitHub : dépôts de scripts PowerShell open source
- Formation LinkedIn Learning : cours PowerShell en français disponibles
Conclusion
Ces 50 commandes couvrent l’essentiel des besoins d’administration Windows au quotidien. La clé pour progresser est de pratiquer régulièrement : commencez par les commandes d’information système (sans risque), puis progressez vers la gestion des services et l’automatisation.
Votre progression recommandée :
- Niveau débutant (semaine 1-2) : maîtrisez les commandes 1 à 12 (système et processus)
- Niveau intermédiaire (semaine 3-4) : services, fichiers et réseau (commandes 13 à 32)
- Niveau avancé (mois 2) : utilisateurs, mises à jour, sécurité (33 à 48)
- Expert (mois 3+) : automatisation, scripts complexes, modules avancés
Conseil final : créez un dossier C:\Scripts\ et sauvegardez vos commandes favorites dans des fichiers .ps1 réutilisables. Commentez abondamment votre code — votre futur vous vous remerciera !
Partagez vos commandes PowerShell préférées en commentaires, et posez vos questions si certaines ne fonctionnent pas dans votre environnement !