Polarys

Gestion du système

Services, processus et événements

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-Process sans -Force : certains processus ignorent la demande d'arrêt sans -Force.
  • Confondre Get-EventLog et Get-WinEvent : Get-EventLog ne lit que les journaux classiques (System, Application, Security). Get-WinEvent lit TOUS les journaux Windows (Applications and Services Logs inclus).
  • Arrêter un service sans vérifier les dépendances : Stop-Service Spooler -Force arrête aussi les services dépendants. Vérifiez avec Get-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-EventLog sur 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.

Quiz de validation

Quiz - 2 questions

1. Quelle cmdlet est préférable à Get-EventLog sur Windows Server 2012+ ?

2. Comment vérifier les services qui dépendent du service Spooler avant de l'arrêter ?

Suis ta progression

Crée un compte gratuit pour suivre ta progression et accéder à toutes les leçons.