web-dev-qa-db-fra.com

Historique de redémarrage / arrêt de Windows Server

Comment puis-je voir facilement un historique de chaque redémarrage ou arrêt de mon serveur Windows et la raison pour laquelle, y compris à l'initiative de l'utilisateur, à l'initiative du système et au niveau du système?

Le journal des événements Windows est une réponse évidente, mais quelle est la liste complète des événements que je dois afficher?

J'ai trouvé ces messages qui répondent partiellement à ma question:

mais ceux-ci ne couvrent pas tous les scénarios AFAIK et les informations sont difficiles à comprendre car elles sont réparties sur plusieurs réponses.

J'ai plusieurs versions de Windows Server, donc une solution qui fonctionne pour au moins les versions 2008, 2008 R2, 2012 et 2012 R2 serait idéale.

92
JohnC

La réponse la plus claire et la plus succincte que j'ai pu trouver est:

qui répertorie ces identifiants d'événements à surveiller (cités mais modifiés et reformatés à partir de l'article):

  • ID d'événement 6005 ( alternative ): "Le service du journal des événements a été démarré." Ceci est également synonyme de démarrage du système.
  • ID d'événement 6006 ( alternative ): "Le service du journal des événements a été arrêté." Ceci est également synonyme d'arrêt du système.
  • ID d'événement 6008 ( alternative ): "L'arrêt précédent du système était inattendu." Enregistre que le système a démarré après avoir été arrêté correctement.
  • ID d'événement 6009 ( alternative ): indique le nom du produit Windows, la version, le numéro de build, le numéro du Service Pack et le type de système d'exploitation détectés au démarrage.
  • ID d'événement 6013: affiche la disponibilité de l'ordinateur. Il n'y a pas de page TechNet pour cet identifiant.

Ajoutez à cela quelques autres des réponses de panne de serveur répertoriées dans mon OP:

  • ID d'événement 1074 ( alternative ): "Le processus X a lancé le redémarrage/arrêt de l'ordinateur au nom de l'utilisateur Y pour la raison suivante: Z." Indique qu'une application ou un utilisateur a lancé un redémarrage ou un arrêt.
  • ID d'événement 1076 ( alternative ): "La raison fournie par l'utilisateur X pour le dernier arrêt inattendu de cet ordinateur est: Y." Enregistre lorsque le premier utilisateur avec des privilèges d'arrêt se connecte à l'ordinateur après un redémarrage ou un arrêt inattendu et fournit une raison pour l'occurrence.

En ai-je manqué?

106
JohnC

Je voudrais simplement laisser cela comme un commentaire car JohnC a essentiellement tout couvert, mais je ne suis pas encore autorisé à le faire.

Les événements qu'il a décrits ont été utilisés pendant un certain temps, ils fonctionneront donc pour n'importe quel système d'exploitation que vous avez mentionné, ainsi que pour leurs frères de bureau. Les pages d'ID d'événement auxquelles Il a lié, comme celle de 6006 sur TechNet, mentionnent Windows Server 2003.

S'il y a eu un arrêt élégant, initié par l'utilisateur ou autre, vous devriez également voir certains ID d'événement 7036 vous indiquant que divers services "sont entrés dans l'état arrêté". Lorsque la machine redémarre, vous verrez plus de 7036 annoncer que les services entrent dans l'état de fonctionnement.

4
JTL

En s'appuyant sur la réponse de @ JohnC et en l'étendant

Vous pouvez utiliser un filtre XML comme:

<QueryList>
<Query Id="0" Path="System">
<Select Path="Security">*[System[Provider[@Name='eventlog' or @Name='Microsoft-Windows-Eventlog'] and (EventID=1074 or EventID=1076 or EventID=6005 or EventID=6006 or EventID=6008) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="Setup">*[System[Provider[@Name='eventlog' or @Name='Microsoft-Windows-Eventlog'] and (EventID=1074 or EventID=1076 or EventID=6005 or EventID=6006 or EventID=6008) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="System">*[System[Provider[@Name='eventlog' or @Name='Microsoft-Windows-Eventlog'] and (EventID=1074 or EventID=1076 or EventID=6005 or EventID=6006 or EventID=6008) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="Microsoft-Windows-Kernel-Power/Diagnostic">*[System[Provider[@Name='Microsoft-Windows-Kernel-Power'] and (Level=1 ) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="Microsoft-Windows-Kernel-Power/Thermal-Diagnostic">*[System[Provider[@Name='Microsoft-Windows-Kernel-Power'] and (Level=1 ) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="System">*[System[Provider[@Name='Microsoft-Windows-Kernel-Power'] and (Level=1 ) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="System">*[System[Provider[@Name='User32'] and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="System">*[System[Provider[@Name='Microsoft-Windows-WER-SystemErrorReporting'] and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
</Query>
</QueryList>

Vous pouvez remplacer 172800000 par les valeurs ci-dessous pour la plage de temps:

86400000 - Dernières 24 heures

172800000 - 2 derniers jours

604800000 - 7 derniers jours

Cela montrera beaucoup plus de détails à partir du moment où le serveur/PC s'est déconnecté. Il comprend les événements Kernel-Power, User32 et EventLog.

4
elemer82

Je préfère accomplir des activités à partir de la ligne de commande. Voici le début d'un extrait que vous pouvez exploiter. Cela affiche les 30 000 enregistrements système les plus récents et renvoie les redémarrages dans ces enregistrements.

Get-EventLog -LogName System -Newest 30000 | Where-Object {$_.EventID -eq 6005}
2
Rakaim

Transformer @ user10082 commentaire en réponse. La solution proposée est un script Powershell à une ligne:

Get-EventLog -LogName System |? {$_.EventID -in (6005,6006,6008,6009,1074,1076)} | ft TimeGenerated,EventId,Message -AutoSize –wrap
1
ocroquette