it-swarm.com.de

Verlauf des Neustarts / Herunterfahrens von Windows Server

Wie kann ich auf einfache Weise einen Verlauf jedes Neustarts oder Herunterfahrens meines Windows Servers anzeigen und den Grund dafür ermitteln, einschließlich des vom Benutzer initiierten, vom System initiierten und des Systemabsturzes?

Das Windows-Ereignisprotokoll ist eine offensichtliche Antwort, aber wie lautet die vollständige Liste der Ereignisse, die ich anzeigen sollte?

Ich habe diese Beiträge gefunden, die meine Frage teilweise beantworten:

diese decken jedoch nicht jedes AFAIK-Szenario ab, und die Informationen sind schwer zu verstehen, da sie auf mehrere Antworten verteilt sind.

Ich habe mehrere Versionen von Windows Server, daher wäre eine Lösung ideal, die für mindestens die Versionen 2008, 2008 R2, 2012 und 2012 R2 funktioniert.

92
JohnC

Die klarste und prägnanteste Antwort, die ich finden konnte, ist:

hier werden die zu überwachenden Ereignis-IDs aufgelistet (zitiert, aber bearbeitet und aus dem Artikel neu formatiert):

  • Ereignis-ID 6005 ( alternativ ): "Der Ereignisprotokolldienst wurde gestartet." Dies ist gleichbedeutend mit einem Systemstart.
  • Ereignis-ID 6006 ( alternativ ): "Der Ereignisprotokolldienst wurde gestoppt." Dies ist gleichbedeutend mit dem Herunterfahren des Systems.
  • Ereignis-ID 6008 ( alternativ ): "Das vorherige Herunterfahren des Systems war unerwartet." Zeichnet auf, dass das System gestartet wurde, nachdem es nicht ordnungsgemäß heruntergefahren wurde.
  • Ereignis-ID 6009 ( alternativ ): Gibt den Windows-Produktnamen, die Version, die Build-Nummer, die Service Pack-Nummer und den Betriebssystemtyp an, die beim Start erkannt wurden.
  • Ereignis-ID 6013: Zeigt die Betriebszeit des Computers an. Für diese ID gibt es keine TechNet-Seite.

Fügen Sie dem noch ein paar weitere Antworten aus den Serverfehlern hinzu, die in meinem OP aufgeführt sind:

  • Ereignis-ID 1074 ( alternativ ): "Der Prozess X hat den Neustart/das Herunterfahren des Computers im Auftrag von Benutzer Y aus folgendem Grund eingeleitet: Z." Zeigt an, dass eine Anwendung oder ein Benutzer einen Neustart oder ein Herunterfahren initiiert hat.
  • Ereignis-ID 1076 ( alternativ ): "Der von Benutzer X angegebene Grund für das letzte unerwartete Herunterfahren dieses Computers ist: Y." Zeichnet auf, wann sich der erste Benutzer mit Herunterfahrberechtigungen nach einem unerwarteten Neustart oder Herunterfahren am Computer anmeldet, und gibt einen Grund für das Auftreten an.

Habe ich welche vermisst?

106
JohnC

Ich würde dies einfach als Kommentar hinterlassen, da JohnC im Grunde alles abgedeckt hat, aber ich darf dies noch nicht tun.

Die von ihm beschriebenen Ereignisse werden bereits seit einiger Zeit verwendet, sodass sie für jedes der von Ihnen genannten Betriebssysteme sowie für deren Desktop-Brüder funktionieren. Die von ihm verlinkten Ereignis-ID-Seiten, z. B. die für 6006 in TechNet, erwähnen Windows Server 2003.

Wenn es ein elegantes Herunterfahren gab, das vom Benutzer initiiert wurde oder auf andere Weise, sollten Sie auch einige Ereignis-ID 7036 sehen, die Ihnen mitteilen, dass verschiedene Dienste "in den gestoppten Zustand eingetreten" sind. Wenn der Computer erneut gestartet wird, werden weitere 7036 angezeigt, die ankündigen, dass Dienste in den Betriebszustand versetzt werden.

4
JTL

Aufbauend auf der Antwort von @ JohnC und Erweiterung

Sie könnten einen XML-Filter verwenden wie:

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

Sie können 172800000 durch die folgenden Werte für den Zeitbereich ersetzen:

86400000 - Letzte 24 Stunden

172800000 - Letzte 2 Tage

604800000 - Letzte 7 Tage

Dies zeigt viel mehr Details ab dem Zeitpunkt, an dem der Server/PC offline geschaltet wurde. Es enthält Kernel-Power-, User32- und EventLog-Ereignisse.

4
elemer82

Ich bevorzuge es, Aktivitäten über die Kommandozeile auszuführen. Hier ist der Anfang eines Snippets, das Sie nutzen können. Dies zeigt die letzten 30.000 Systemdatensätze an und gibt die Neustarts innerhalb dieser Datensätze zurück.

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

@ User10082 Kommentar in eine Antwort verwandeln. Die vorgeschlagene Lösung ist ein einzeiliges Powershell-Skript:

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