Este artículo está disponible en francés.
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 MonAppliBonne 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| ID | Journal | Signification |
|---|---|---|
| 4624 / 4625 | Sécurité | ouverture de session réussie / échouée |
| 4740 | Sécurité (DC) | compte verrouillé |
| 4720 / 4728 | Sécurité (DC) | compte créé / ajouté à un groupe global de sécurité |
| 7034 / 7036 | Système | service arrêté de façon inattendue / changement d’état |
| 41 / 6008 | Système | redémarrage sans arrêt propre (coupure, plantage) |
| 1074 | Système | arrêt ou redémarrage demandé (par qui et pourquoi) |
| 1000 | Application | plantage 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 #
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| Ressource | Compteur | Seuil d’alerte indicatif |
|---|---|---|
| CPU | % Processor Time | > 85 % de façon prolongée |
| Mémoire | Available MBytes | < 10 % de la RAM |
| Disque | Avg. Disk sec/Transfer | > 20 ms (HDD), > 5 ms (SSD) |
| Réseau | Bytes 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 #
| Action | Commande |
|---|---|
| Services automatiques arrêtés | Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' } |
| Redémarrer un service | Restart-Service W3SVC |
| Récupération après échec | sc.exe failure MonAppli reset= 86400 actions= restart/60000 |
| Créer une tâche planifiée | Register-ScheduledTask -TaskName Sauvegarde -Action $a -Trigger $t |
| Erreurs système des 24 h | Get-WinEvent -FilterHashtable @{LogName='System'; Level=2; StartTime=(Get-Date).AddDays(-1)} |
| Échecs d’ouverture de session | Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 20 |
| Compteurs de performance | Get-Counter '\Processor(_Total)\% Processor Time' -Continuous |
| Moniteur de fiabilité | perfmon /rel |
Mi seguimiento
Inicia sesión para seguir tu progreso y tomar notas. Iniciar sesión
💬 Preguntas sobre esta lección
Todavía no hay preguntas: sé el primero en pedir ayuda o compartir tu configuración.
Artículos recomendados
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...
Active Directory Domain Services et DNS
Comprendre et déployer Active Directory : forêt, domaines, unités d'organisation, contrôleurs de ...
PowerShell pour l’administrateur Windows
Maîtriser PowerShell pour administrer Windows : cmdlets et aide, pipeline d'objets, filtres et fo...
Windows et Windows Server : versions, éditions et architecture
Découvrir l'écosystème Windows pour l'administrateur : Windows 11 et Windows Server 2025, édition...
Bonnes pratiques d’administration Windows
La check-list de production pour Windows et Windows Server : installation, identité et Active Dir...
Stockage Windows : disques, volumes, Storage Spaces et RAID
Administrer le stockage sous Windows : GPT et MBR, partitions et volumes en PowerShell, NTFS et R...
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...
Mises à jour et sécurité Windows : WSUS, Defender, BitLocker, LAPS et durcissement
Maintenir et sécuriser un parc Windows : stratégie de mises à jour (Windows Update, WSUS, Azure U...
Sauvegarde, Hyper-V et dépannage de Windows
Sauvegarder et restaurer avec Windows Server Backup (y compris l'état du système et Active Direct...