Herauszufinden, wer oder was einen Server- oder Workstation-Neustart verursacht hat, kann sich als Albtraum erweisen, wenn man nicht weiß, wo man suchen soll. Manchmal ist es für Systemadministratoren oder einfach für alle, die ungewöhnliche Ausfälle beheben, wichtig zu wissen, was im Hintergrund passiert. Windows protokolliert all diese Ereignisse – wie Herunterfahren, Neustarts und sogar Abstürze – in der Ereignisanzeige. Wer weiß, wie man diese Protokolle durchsucht, spart enorm viel Zeit und findet heraus, ob ein Benutzer, eine geplante Aufgabe oder ein Dienst den Neustart ausgelöst hat. Mit PowerShell lässt sich der gesamte Prozess automatisieren und die Informationen schneller abrufen, als wenn man die Protokolle manuell durchsucht. Vielleicht haben Sie schon einmal einen Neustart gesehen, der von „NT AUTHORITY\SYSTEM“ initiiert wurde, und sich gefragt, was dahintersteckt? Hier erfahren Sie, wie Sie es herausfinden.
Wie man herausfindet, wer einen Windows-Rechner neu gestartet oder heruntergefahren hat
Verwenden Sie die Ereignisanzeige, um herauszufinden, wer einen Neustart ausgelöst hat.
- Öffnen Sie die Ereignisanzeige direkt, indem Sie eventvwr.msc in das Ausführen-Dialogfeld ( Win + R) oder die Suchfunktion im Startmenü eingeben; dies ist der schnellste Weg, um loszulegen.
- Navigieren Sie anschließend zu Windows-Protokolle und wählen Sie System aus.
- Klicken Sie mit der rechten Maustaste auf System und wählen Sie Aktuelles Protokoll filtern. Hier geschieht die Magie.
- Geben Sie im Filterfenster im Feld „Ereignis-ID“ die ID 1074 ein. Diese ID deckt die meisten vom Benutzer ausgelösten Herunterfahren oder Neustarts ab. Klicken Sie auf „OK“, und schon müssen Sie weniger Protokolle durchsuchen.
- Schauen Sie sich das letzte Ereignis an – dort wird üblicherweise der Prozess oder Benutzer angezeigt, der den Neustart ausgelöst hat. Wenn als Quelle „User32“ angezeigt wird, bedeutet dies in der Regel, dass jemand in der Benutzeroberfläche des Betriebssystems auf „Neustart“ oder „Herunterfahren“ geklickt hat.
Hinweis: In manchen Fällen wird möglicherweise NT AUTHORITY\SYSTEM angezeigt. Dies ist in der Regel auf einen Windows-Dienst oder ein Update zurückzuführen, das einen Neustart auslöst, und nicht auf einen manuellen Neustart durch den Benutzer.
Weitere Ereignisdetails finden Sie in der PowerShell-Dokumentation.
Diese Methode eignet sich hervorragend für schnelle Berichte oder zur Automatisierung von Prozessen. Das integrierte Cmdlet „Get-WinEvent“ ist leistungsfähiger und flexibler als das ältere „Get-EventLog“.
- Führen Sie diesen Befehl aus, um alle Neustart-/Herunterfahrereignisse mit der Ereignis-ID 1074 abzurufen :
Get-WinEvent -FilterHashtable @{logname='System'; id=1074} | ft TimeCreated, Id, Message
Erwarten Sie eine Liste der Neustartereignisse mit Zeitstempeln, Benutzer- oder Prozessnamen und Gründen.Übersichtlich und ansprechend.
Ein weiteres praktisches Skript ruft die letzten zehn Neustart-/Herunterfahrereignisse ab und zeigt Ihnen an, welcher Benutzer oder Prozess beteiligt war – besonders nützlich, wenn Sie einen historischen Kontext benötigen:
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
Denn natürlich macht PowerShell es einfacher, genau das zu bekommen, was man braucht.
Überprüfen Sie das Ereignisprotokoll eines Remote-Servers auf Neustartursachen.
Wenn Sie nicht physisch auf den Server zugreifen oder eine RDP-Verbindung herstellen möchten, kann PowerShell die Arbeit remote erledigen. Verwenden Sie diesen Befehl, um das letzte Neustartereignis eines Remotecomputers abzurufen:
Invoke-Command -ComputerName mun-dc03 -ScriptBlock { Get-WinEvent -FilterHashtable @{logname='System'; id=1074} | select-object -Last 1 }
Das ist äußerst praktisch, wenn Sie mehrere Server verwalten und schnell Informationen benötigen. Denken Sie daran, dass Sie die entsprechenden Berechtigungen oder die richtigen Richtlinien für die reibungslose Ausführung von Remote-PowerShell-Befehlen benötigen.
Was wäre, wenn der Neustart unerwartet erfolgte?
Wenn Sie in den Protokollen die Ereignis-ID 6008 finden, deutet dies auf einen ungeplanten Systemabsturz hin, beispielsweise aufgrund eines Stromausfalls oder eines Systemabsturzes. Die Analyse dieser Protokolle kann etwas aufwendiger sein, ist aber unerlässlich, um die Ursache der unerwarteten Ausfallzeit zu ermitteln.
The previous system shutdown at 3:24:29 AM on 9/17/2022 was unexpected.
Zusammenfassend lässt sich sagen, dass die Ermittlung von Neustartgründen – ob über die Ereignisanzeige oder PowerShell – nicht allzu kompliziert ist, sobald man weiß, wo man suchen muss. Es ist hilfreich, sich mit den Ereignis-IDs und ihrer Bedeutung vertraut zu machen, insbesondere für die Fehlerbehebung oder Überprüfung. Beachten Sie außerdem, dass manche Neustarts lediglich Windows-Updates oder geplante Wartungsarbeiten sind. Daher ist es wichtig zu klären, ob Benutzer oder Server diese ausgelöst haben, um das Gesamtbild zu verstehen.