RousselTMLEARNING

TP · Administration Windows : de la découverte à l'expertise

TP : Surveiller un serveur avec les tâches planifiées et les journaux avec correction

La correction est intégrée au TP (Voir les encadrés de couleur vert)

Ce que vous allez apprendre dans ce TP
  • Écrire dans un journal d’événements
  • Planifier un script PowerShell
  • Filtrer les journaux et configurer la récupération d’un service

Introduction #

Ce que vous allez apprendre dans cette section
  • Écrire dans un journal d’événements
  • Planifier un script PowerShell
  • Filtrer les journaux et configurer la récupération d’un service

Contexte. Le service d'impression d'un serveur s'arrête régulièrement et le disque se remplit sans prévenir. Avant d'installer un outil de supervision, vous mettez en place une surveillance native.

Prérequis : une machine virtuelle Windows Server 2025 jetable (évaluation gratuite) avec un compte administrateur, et PowerShell ouvert en tant qu'administrateur  ·  Durée estimée : 45 min

Une tâche planifiée qui écrit des événements, des requêtes Get-WinEvent et un service qui redémarre seul.

Mise en place #

Étapes guidées, avec leur correction.

  1. 1. Créer une source d’événements

    Pourquoi ? Un script qui écrit dans les journaux Windows est visible par tous les outils de supervision.

    Créez la source ControleServeur dans le journal Application et écrivez un événement de test (ID 1000).
    Voir la correction
    New-EventLog -LogName Application -Source ControleServeur
    Write-EventLog -LogName Application -Source ControleServeur -EventId 1000 -EntryType Information -Message 'Test de la source'
    Get-WinEvent -FilterHashtable @{ LogName = 'Application'; ProviderName = 'ControleServeur' } -MaxEvents 1 | Format-List TimeCreated, Id, Message
  2. 2. Écrire le script de contrôle

    Pourquoi ? Un contrôle simple et fiable vaut mieux qu’un outil mal configuré.

    Écrivez C:\TP\Scripts\Controle.ps1 : alerte (ID 2001, avertissement) si un volume a moins de 15 % libre, alerte (ID 2002, erreur) pour chaque service automatique arrêté, sinon un événement 1000.
    Voir la correction
    @'
    $src = 'ControleServeur' ; $alertes = 0
    Get-Volume | Where-Object { $_.DriveLetter -and $_.Size -gt 0 } | ForEach-Object {
        $pct = [math]::Round(100 * $_.SizeRemaining / $_.Size, 1)
        if ($pct -lt 15) { $alertes++; Write-EventLog -LogName Application -Source $src -EventId 2001 -EntryType Warning -Message "Volume $($_.DriveLetter): $pct % libre" }
    }
    Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' } | ForEach-Object {
        $alertes++; Write-EventLog -LogName Application -Source $src -EventId 2002 -EntryType Error -Message "Service arrêté : $($_.Name)"
    }
    if (-not $alertes) { Write-EventLog -LogName Application -Source $src -EventId 1000 -EntryType Information -Message 'Contrôle OK' }
    '@ | Set-Content C:\TP\Scripts\Controle.ps1 -Encoding UTF8
    & C:\TP\Scripts\Controle.ps1
  3. 3. Planifier le contrôle

    Pourquoi ? Le planificateur exécute le script sans session ouverte, sous le compte SYSTEM.

    Créez la tâche \Exploitation\Controle serveur toutes les 15 minutes, lancez-la et vérifiez son résultat.
    Voir la correction
    $a = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument '-NoProfile -ExecutionPolicy Bypass -File C:\TP\Scripts\Controle.ps1'
    $t = New-ScheduledTaskTrigger -Once -At (Get-Date).AddMinutes(1) -RepetitionInterval (New-TimeSpan -Minutes 15)
    $p = New-ScheduledTaskPrincipal -UserId SYSTEM -LogonType ServiceAccount -RunLevel Highest
    Register-ScheduledTask -TaskName 'Controle serveur' -TaskPath '\Exploitation\' -Action $a -Trigger $t -Principal $p
    Start-ScheduledTask -TaskName 'Controle serveur' -TaskPath '\Exploitation\'
    Get-ScheduledTaskInfo -TaskName 'Controle serveur' -TaskPath '\Exploitation\' | Select-Object LastRunTime, LastTaskResult, NextRunTime
  4. 4. Provoquer et détecter un incident

    Pourquoi ? On vérifie qu’une alerte se déclenche vraiment.

    Arrêtez le service Spooler, relancez la tâche, puis retrouvez l’événement 2002 et l’arrêt du service dans le journal Système (ID 7036).
    Voir la correction
    Stop-Service Spooler -Force
    Start-ScheduledTask -TaskName 'Controle serveur' -TaskPath '\Exploitation\' ; Start-Sleep 10
    Get-WinEvent -FilterHashtable @{ LogName = 'Application'; ProviderName = 'ControleServeur'; Id = 2002 } -MaxEvents 3 | Select-Object TimeCreated, Message
    Get-WinEvent -FilterHashtable @{ LogName = 'System'; Id = 7036; StartTime = (Get-Date).AddMinutes(-10) } | Select-Object TimeCreated, Message
  5. 5. Récupération automatique

    Pourquoi ? Le gestionnaire de services peut redémarrer un service tombé sans intervention.

    Configurez Spooler pour redémarrer après 1 minute aux deux premiers échecs, puis simulez un plantage en tuant son processus.
    Voir la correction
    Start-Service Spooler
    sc.exe failure Spooler reset= 86400 actions= restart/60000/restart/60000/none/0
    sc.exe qfailure Spooler
    Stop-Process -Name spoolsv -Force        # plantage simulé (un arrêt propre ne déclenche pas la récupération)
    Start-Sleep 75 ; Get-Service Spooler
    Get-WinEvent -FilterHashtable @{ LogName = 'System'; Id = 7031, 7034; StartTime = (Get-Date).AddMinutes(-5) } | Select-Object TimeCreated, Id, Message
  6. 6. Analyser les journaux

    Pourquoi ? Quelques requêtes répondent aux questions les plus fréquentes d’un incident.

    Affichez les erreurs Système des dernières 24 heures groupées par source, les derniers redémarrages (1074, 6008) et les échecs d’ouverture de session (4625) de la dernière heure.
    Voir la correction
    Get-WinEvent -FilterHashtable @{ LogName = 'System'; Level = 2; StartTime = (Get-Date).AddDays(-1) } -ErrorAction SilentlyContinue |
        Group-Object ProviderName | Sort-Object Count -Descending | Select-Object Count, Name
    Get-WinEvent -FilterHashtable @{ LogName = 'System'; Id = 1074, 6008 } -MaxEvents 5 | Select-Object TimeCreated, Id, Message
    Get-WinEvent -FilterHashtable @{ LogName = 'Security'; Id = 4625; StartTime = (Get-Date).AddHours(-1) } -ErrorAction SilentlyContinue | Measure-Object

Niveau de difficulté : ●●○○○ (2/5)

Mon suivi

  • ⏱ Durée estimée : ≈ 45 min

Connectez-vous pour suivre votre progression et prendre des notes. Se connecter

💬 Questions sur cette leçon

Aucune question pour l'instant : soyez le premier à demander de l'aide ou à partager votre configuration.

Poser une question sur cette leçon →

Articles recommandés

Services, tâches planifiées, journaux d’événements et performances

Piloter les services Windows et leur récupération, automatiser avec le planificateur de tâches, e...

Paquets, services systemd, journaux et tâches planifiées

Installer et mettre à jour des logiciels avec apt et dnf, piloter les services avec systemctl, éc...

Processus, mémoire et performance : surveiller et dépanner un serveur Linux

Comprendre et piloter les processus Linux (ps, top, signaux, nice, jobs), interpréter la charge, ...

Réseau Windows : IP, DNS, DHCP, pare-feu et accès à distance

Configurer et diagnostiquer le réseau sous Windows en PowerShell, déployer un serveur DHCP, maîtr...

PowerShell pour l’administrateur Windows

Maîtriser PowerShell pour administrer Windows : cmdlets et aide, pipeline d'objets, filtres et fo...

Stratégies de groupe (GPO) : configurer le parc depuis Active Directory

Concevoir et dépanner les stratégies de groupe : configuration ordinateur et utilisateur, liaison...

Active Directory Domain Services et DNS

Comprendre et déployer Active Directory : forêt, domaines, unités d'organisation, contrôleurs de ...

Sécurité et durcissement d'un serveur Linux

Durcir un serveur Linux : moindre privilège, mises à jour, SSH sécurisé, pare-feu, fail2ban, SELi...

Sauvegarde, supervision et dépannage d'un serveur Linux

Exploiter un serveur Linux au quotidien : stratégie de sauvegarde 3-2-1 avec rsync, tar, snapshot...

Soutenir

♥ SOUTENIR

Soutenez RousselTM Learning

Les formations, articles, TP et attestations restent gratuits et sans publicité intrusive. Une contribution libre, du montant de votre choix, finance l’hébergement, les environnements de TP et l’écriture de nouveaux contenus.

Contribuer avec PayPal Montant libre · carte bancaire ou compte PayPalEn savoir plus
QR code PayPal
Ou scannez ce QR code avec votre téléphone

Merci, chaque contribution compte !