RousselTMLEARNING

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

Services, tâches planifiées, journaux et performances

1. Les services #

Les programmes qui tournent sans session.

Piloter un service #

Un service est un programme lancé par le gestionnaire de contrôle des services, sous un compte (LocalSystem, NetworkService, LocalService, compte de domaine ou compte de service géré gMSA). Son type de démarrage est Automatique, Automatique (début différé), Manuel ou Désactivé.

Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' }   # services auto arrêtés : suspects
Restart-Service Spooler -Force ; Get-Service Spooler -DependentServices
Set-Service -Name W3SVC -StartupType Automatic
Get-CimInstance Win32_Service -Filter "Name='W3SVC'" | Select-Object Name, StartName, PathName, ProcessId
sc.exe failure MonAppli reset= 86400 actions= restart/60000/restart/60000/none/0    # redémarrage automatique après échec
sc.exe qfailure MonAppli
Bonne pratique : Faites tourner les applications sous un gMSA plutôt que sous un compte de domaine classique : son mot de passe long est changé automatiquement par AD et personne ne le connaît.

Le planificateur de tâches #

$action  = New-ScheduledTaskAction -Execute 'pwsh.exe' -Argument '-NoProfile -File C:\Scripts\Nettoyer-Logs.ps1 -Dossier D:\Logs'
$trigger = New-ScheduledTaskTrigger -Daily -At 02:30
$princ   = New-ScheduledTaskPrincipal -UserId 'SYSTEM' -LogonType ServiceAccount -RunLevel Highest
Register-ScheduledTask -TaskName 'Nettoyage logs' -TaskPath '\Exploitation\' -Action $action -Trigger $trigger -Principal $princ
Start-ScheduledTask -TaskName 'Nettoyage logs' -TaskPath '\Exploitation\'
Get-ScheduledTask -TaskPath '\Exploitation\' | Get-ScheduledTaskInfo | Select-Object TaskName, LastRunTime, LastTaskResult, NextRunTime
À savoir : LastTaskResult vaut 0 en cas de succès ; une autre valeur est le code de retour du script ou une erreur du planificateur (0x41301 = en cours, 0x1 = échec du programme).

2. Les journaux d'événements #

La mémoire du système.

Lire les journaux avec Get-WinEvent #

Les journaux principaux sont Système, Application et Sécurité, complétés par des centaines de journaux « Applications et services » (Microsoft-Windows-…/Operational). Get-WinEvent avec -FilterHashtable filtre côté serveur : c'est beaucoup plus rapide que Where-Object.

Get-WinEvent -FilterHashtable @{ LogName = 'System'; Level = 1, 2; StartTime = (Get-Date).AddDays(-1) } |
    Select-Object TimeCreated, Id, ProviderName, Message -First 20
Get-WinEvent -FilterHashtable @{ LogName = 'Security'; Id = 4625; StartTime = (Get-Date).AddHours(-1) } |
    ForEach-Object { $_.Properties[5].Value } | Group-Object | Sort-Object Count -Descending   # comptes visés par des échecs d'ouverture
Get-WinEvent -ListLog * | Where-Object RecordCount -gt 0 | Sort-Object RecordCount -Descending | Select-Object -First 10
wevtutil epl System C:\rapports\system.evtx       # exporter un journal pour analyse
IDJournalSignification
4624 / 4625Sécuritéouverture de session réussie / échouée
4740Sécurité (DC)compte verrouillé
4720 / 4728Sécurité (DC)compte créé / ajouté à un groupe global de sécurité
7034 / 7036Systèmeservice arrêté de façon inattendue / changement d’état
41 / 6008Systèmeredémarrage sans arrêt propre (coupure, plantage)
1074Systèmearrêt ou redémarrage demandé (par qui et pourquoi)
1000Applicationplantage d’une application (module fautif)
Bonne pratique : Augmentez la taille des journaux Sécurité et Système (par GPO), activez la stratégie d'audit avancée et centralisez les journaux : abonnements d'événements Windows (WEF), Azure Monitor ou un SIEM. Un journal local est effacé par un attaquant ou écrasé en quelques heures.

3. Les performances #

Mesurer avant de conclure.

Compteurs et méthode #

Méthode de diagnostic
Get-Counter '\Processor(_Total)\% Processor Time', '\Memory\Available MBytes', '\LogicalDisk(_Total)\Avg. Disk sec/Transfer', '\Network Interface(*)\Bytes Total/sec' -SampleInterval 2 -MaxSamples 5
Get-Process | Sort-Object WorkingSet64 -Descending | Select-Object -First 5 Name, Id, @{n='Mo'; e={[int]($_.WorkingSet64/1MB)}}, CPU
logman create counter Perf-Base -c '\Processor(_Total)\% Processor Time' '\Memory\Available MBytes' -si 00:00:15 -o C:\PerfLogs\base
logman start Perf-Base                         # collecte continue, à analyser dans perfmon
RessourceCompteurSeuil d’alerte indicatif
CPU% Processor Time> 85 % de façon prolongée
MémoireAvailable MBytes< 10 % de la RAM
DisqueAvg. Disk sec/Transfer> 20 ms (HDD), > 5 ms (SSD)
RéseauBytes Total/sec> 70 % du débit de la carte

Outils graphiques : le Gestionnaire des tâches, le Moniteur de ressources (resmon) pour voir quel processus utilise quel fichier ou port, l'Analyseur de performances (perfmon) pour les collectes et le Moniteur de fiabilité (perfmon /rel) pour l'historique des plantages et des installations.

Commandes à connaître #

ActionCommande
Services automatiques arrêtésGet-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' }
Redémarrer un serviceRestart-Service W3SVC
Récupération après échecsc.exe failure MonAppli reset= 86400 actions= restart/60000
Créer une tâche planifiéeRegister-ScheduledTask -TaskName Sauvegarde -Action $a -Trigger $t
Erreurs système des 24 hGet-WinEvent -FilterHashtable @{LogName='System'; Level=2; StartTime=(Get-Date).AddDays(-1)}
Échecs d’ouverture de sessionGet-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 20
Compteurs de performanceGet-Counter '\Processor(_Total)\% Processor Time' -Continuous
Moniteur de fiabilitéperfmon /rel

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

Mon suivi

  • ⏱ Durée estimée : ≈ 7 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

Utilisateurs, groupes, autorisations NTFS et partages SMB

Gérer les comptes et groupes locaux, comprendre UAC, appliquer des autorisations NTFS avec hérita...

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...

Bonnes pratiques d'administration Linux

Check-list pour administrer des serveurs Linux : comptes et sudo, SSH, mises à jour, services sys...

Services Kubernetes : ClusterIP, NodePort, LoadBalancer et ExternalName

Les Services Kubernetes expliqués : rôle d'un service Kubernetes, types ClusterIP, NodePort, Load...

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...

Stockage sous Linux : disques, partitions, systèmes de fichiers et LVM

Administrer le stockage Linux : lsblk et blkid, partitionnement GPT, ext4 et XFS, montage et /etc...

Réseau sous Linux : configuration, diagnostic, pare-feu et SSH

Configurer et dépanner le réseau Linux : ip, ss, netplan et NetworkManager, DNS, diagnostic par c...

Installer Fleet Server et enrôler des Elastic Agent

Mettre en place Fleet Server, créer une politique, enrôler des agents Linux, Windows et Docker, c...

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 !