Comment identifier qui a redémarré ou arrêté un serveur Windows

Déterminer la cause du redémarrage d’un serveur ou d’un poste de travail peut s’avérer complexe si l’on ne sait pas où chercher. Il est parfois crucial pour les administrateurs système, ou même pour les personnes chargées du dépannage de pannes inattendues, de comprendre ce qui se passe réellement en coulisses. Heureusement, Windows enregistre tous ces événements (arrêts, redémarrages et même plantages) dans l’Observateur d’événements. Savoir naviguer dans ces journaux permet de gagner un temps précieux et d’identifier l’origine du redémarrage : utilisateur, tâche planifiée ou service ? De plus, grâce à PowerShell, vous pouvez automatiser l’ensemble du processus et obtenir les informations plus rapidement qu’en parcourant les journaux manuellement. Vous avez peut-être déjà vu un redémarrage initié par « NT AUTHORITY\SYSTEM » et vous vous êtes demandé ce qui se cachait derrière ? Voici comment le découvrir.

Comment identifier la personne qui a redémarré ou éteint un ordinateur Windows

Utilisez l’Observateur d’événements pour trouver qui a déclenché un redémarrage.

  • Ouvrez directement l’Observateur d’événements en tapant eventvwr.msc dans la boîte de dialogue Exécuter ( Win + R) ou dans la recherche du menu Démarrer ; c’est le moyen le plus rapide de commencer.
  • Ensuite, accédez à Journaux Windows et sélectionnez Système.
  • Faites un clic droit sur Système et choisissez Filtrer le journal actuel. C’est là que la magie opère.
  • Dans la fenêtre de filtre, saisissez 1074 dans le champ ID d’événement. Cet ID couvre la plupart des arrêts ou redémarrages initiés par l’utilisateur. Cliquez sur OK, et voilà, moins de journaux à parcourir.
  • Consultez le dernier événement : il indique généralement le processus ou l’utilisateur qui a demandé le redémarrage. Si la source est User32, cela signifie généralement que quelqu’un a cliqué sur Redémarrer ou Éteindre depuis l’interface du système d’exploitation.

Remarque : Dans certains cas, vous pouvez voir NT AUTHORITY\SYSTEM. Il s’agit généralement d’un service ou d’une mise à jour Windows qui déclenche un redémarrage, et non d’un redémarrage manuel par l’utilisateur.

Consultez PowerShell pour plus de détails sur l’événement.

Cette méthode est idéale pour obtenir un rapport rapide ou pour automatiser des tâches. La cmdlet intégrée Get-WinEvent est plus puissante et flexible que l’ancienne cmdlet Get-EventLog.

  • Exécutez cette commande pour extraire tous les événements de redémarrage/arrêt avec l’ID d’événement 1074 :
  • Get-WinEvent -FilterHashtable @{logname='System'; id=1074} | ft TimeCreated, Id, Message

Vous obtiendrez une liste des événements de redémarrage avec horodatage, nom d’utilisateur ou de processus et motif. Clair et concis.

Un autre script pratique récupère les dix derniers événements de redémarrage/arrêt, en indiquant quel utilisateur ou processus était impliqué — particulièrement utile si vous souhaitez un contexte historique :

Get-EventLog -LogName System | where {$_. EventId -eq 1074} | select-object -first 10 | ForEach-Object { $rv = New-Object PSObject $rv | Add-Member -MemberType NoteProperty -Name Date -Value $_. TimeGenerated $rv | Add-Member -MemberType NoteProperty -Name User -Value $_. ReplacementStrings[6] $rv | Add-Member -MemberType NoteProperty -Name Process -Value $_. ReplacementStrings[0] $rv | Add-Member -MemberType NoteProperty -Name Action -Value $_. ReplacementStrings[4] $rv | Add-Member -MemberType NoteProperty -Name Reason -Value $_. ReplacementStrings[2] $rv } | Select-Object Date, User, Process, Action, Reason | ft

Car, bien sûr, PowerShell facilite l’obtention de ce dont vous avez exactement besoin.

Consultez le journal des événements d’un serveur distant pour identifier les causes du redémarrage.

Si vous ne souhaitez pas accéder physiquement au serveur ni vous y connecter via RDP, PowerShell peut opérer à distance. Utilisez cette commande pour obtenir l’événement du dernier redémarrage d’une machine distante :

Invoke-Command -ComputerName mun-dc03 -ScriptBlock { Get-WinEvent -FilterHashtable @{logname='System'; id=1074} | select-object -Last 1 }

C’est extrêmement pratique pour gérer plusieurs serveurs et obtenir rapidement des informations. N’oubliez pas que vous devez disposer des autorisations appropriées ou des stratégies adéquates pour que les commandes PowerShell à distance fonctionnent correctement.

Et si le redémarrage était inattendu ?

Si l’événement 6008 apparaît dans les journaux, cela indique un arrêt système imprévu, comme une panne de courant ou un plantage. L’analyse de ces journaux peut s’avérer plus complexe, mais elle est essentielle pour identifier la cause de cette interruption de service inattendue.

The previous system shutdown at 3:24:29 AM on 9/17/2022 was unexpected.

En conclusion, que ce soit via l’Observateur d’événements ou PowerShell, identifier les causes d’un redémarrage n’est pas trop compliqué une fois qu’on sait où chercher. Il est utile de se familiariser avec les ID d’événements et leur signification, notamment pour le dépannage ou l’audit. De plus, n’oubliez pas que certains redémarrages sont simplement dus à des mises à jour Windows ou à des opérations de maintenance planifiées ; il est donc essentiel de déterminer si ces redémarrages ont été initiés par les utilisateurs ou les serveurs pour avoir une vision d’ensemble.