Services, processus et événements
L'administration quotidienne d'un serveur Windows passe par trois piliers : surveiller les processus, gérer les services et lire les journaux d'événements. PowerShell permet de tout faire en ligne de commande, sans ouvrir de console graphique.
Gestion des processus
# Lister tous les processus, triés par CPU décroissant
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10
# Trouver un processus par nom
Get-Process -Name chrome
# Tuer un processus par nom (toutes les instances)
Stop-Process -Name notepad -Force
# Tuer un processus par PID
Stop-Process -Id 1234
# Lancer un processus
Start-Process notepad.exe
Start-Process -FilePath "C:\Program Files\Firefox\firefox.exe" -ArgumentList "https://google.com"
Gestion des services
# Lister tous les services
Get-Service
# Filtrer services arrêtés avec démarrage automatique
Get-Service | Where-Object { $_.Status -eq 'Stopped' -and $_.StartType -eq 'Automatic' }
# Démarrer / arrêter / redémarrer un service
Start-Service -Name Spooler
Stop-Service -Name Spooler
Restart-Service -Name Spooler
# Changer le type de démarrage
Set-Service -Name Spooler -StartupType Disabled
Journaux d'événements (Event Log)
# Lire les 20 derniers événements du journal System
Get-EventLog -LogName System -Newest 20
# Filtrer par type d'événement
Get-EventLog -LogName System -EntryType Error -Newest 50
# Filtrer par source
Get-EventLog -LogName Application -Source "MSSQLSERVER" -Newest 100
# PowerShell 3+ : Get-WinEvent (plus puissant)
Get-WinEvent -LogName System -MaxEvents 20 | Where-Object { $_.LevelDisplayName -eq 'Error' }
Cas concret : script de monitoring
# Vérifier que les services critiques sont démarrés
$servicesCritiques = @('Spooler', 'W32Time', 'WinRM', 'DNS')
foreach ($svc in $servicesCritiques) {
$service = Get-Service -Name $svc -ErrorAction SilentlyContinue
if ($null -eq $service) {
Write-Host "ABSENT : $svc" -ForegroundColor Red
} elseif ($service.Status -ne 'Running') {
Write-Host "ARRETE : $svc : tentative de démarrage..." -ForegroundColor Yellow
Start-Service -Name $svc
} else {
Write-Host "OK : $svc" -ForegroundColor Green
}
}
Erreurs fréquentes
Stop-Processsans-Force: certains processus ignorent la demande d'arrêt sans-Force.- Confondre
Get-EventLogetGet-WinEvent:Get-EventLogne lit que les journaux classiques (System, Application, Security).Get-WinEventlit TOUS les journaux Windows (Applications and Services Logs inclus). - Arrêter un service sans vérifier les dépendances :
Stop-Service Spooler -Forcearrête aussi les services dépendants. Vérifiez avecGet-Service -Name Spooler -DependentServices.
À retenir
Get-Process / Stop-Process→ gestion processus.Get-Service / Start-Service / Stop-Service / Set-Service→ gestion services.Get-WinEvent→ journaux événements (préférer àGet-EventLogsur Windows Server 2012+).- Toujours vérifier les dépendances avant d'arrêter un service critique.
Mini-exercice
Écrivez un one-liner qui affiche les 5 dernières erreurs du journal Système avec la date, la source et le message.