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.
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):
Ajoutez à cela quelques autres des réponses de panne de serveur répertoriées dans mon OP:
En ai-je manqué?
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.
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) <= 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) <= 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) <= 172800000]]]</Select>
<Select Path="Microsoft-Windows-Kernel-Power/Diagnostic">*[System[Provider[@Name='Microsoft-Windows-Kernel-Power'] and (Level=1 ) and TimeCreated[timediff(@SystemTime) <= 172800000]]]</Select>
<Select Path="Microsoft-Windows-Kernel-Power/Thermal-Diagnostic">*[System[Provider[@Name='Microsoft-Windows-Kernel-Power'] and (Level=1 ) and TimeCreated[timediff(@SystemTime) <= 172800000]]]</Select>
<Select Path="System">*[System[Provider[@Name='Microsoft-Windows-Kernel-Power'] and (Level=1 ) and TimeCreated[timediff(@SystemTime) <= 172800000]]]</Select>
<Select Path="System">*[System[Provider[@Name='User32'] and TimeCreated[timediff(@SystemTime) <= 172800000]]]</Select>
<Select Path="System">*[System[Provider[@Name='Microsoft-Windows-WER-SystemErrorReporting'] and TimeCreated[timediff(@SystemTime) <= 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.
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}
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