In Windows wird die Ursache für das Herunterfahren normalerweise im Systemereignisprotokoll gespeichert. Sie können das Ereignisprotokoll mit der Systemsteuerung, der Ereignisanzeige oder mit PowerShell-Befehlen wie Get-EventLog
aufrufen, um die Ereignisse anzuzeigen und nach Informationen zum Herunterfahren des Systems zu suchen.
Um die Ursache für das Herunterfahren zu finden, können Sie das Systemereignisprotokoll durchsuchen und nach Einträgen mit der Event-ID 6006 suchen, die anzeigen, wann der Server heruntergefahren wurde. Diese Einträge enthalten normalerweise eine Nachricht, die die Ursache des Herunterfahrens angeben sollte.
Diese Nachricht zeigt an, dass das Ereignisprotokolldienst gestoppt wurde, was möglicherweise die Ursache für das Herunterfahren des Systems war.
Zeit und Ursache des Herunterfahrens auslesen (lokal)
Um mit PowerShell herauszufinden, wann ein Server heruntergefahren wurde und warum, können Sie den Befehl Get-EventLog
verwenden, um das Ereignisprotokoll nach Einträgen zum Herunterfahren des Servers zu durchsuchen. Der Befehl Get-EventLog
gibt eine Liste von Einträgen im Ereignisprotokoll zurück, die Sie dann filtern und sortieren können, um die gewünschten Informationen zu finden.
Dieser Befehl durchsucht das Systemereignisprotokoll nach Einträgen mit der Event-ID 6006, die anzeigen, wann der Server heruntergefahren wurde. Diese Einträge werden nach dem Zeitpunkt ihrer Erstellung sortiert und dann die Felder “TimeGenerated”, “EventID” und “Message” ausgegeben.
lokalen Rechner herunterfahren
Um den lokalen Rechner mit PowerShell herunterzufahren und einen Grund anzugeben, können Sie den Befehl Stop-Computer
verwenden und ihm die Option -Comment
übergeben, um eine Nachricht anzugeben, die als Grund für das Herunterfahren des Systems angezeigt wird.
> Stop-Computer -Comment “System upgrade”
Dieser Befehl führt das Herunterfahren des Systems aus und zeigt eine Nachricht an, die besagt, dass das System heruntergefahren wurde, um ein Upgrade durchzuführen. Die Nachricht wird auch im Ereignisprotokoll gespeichert und kann später ausgelesen werden, um zu sehen, warum das System heruntergefahren wurde.
remote Server herunterfahren
Um einen entfernten Computer mit PowerShell herunterzufahren und einen Grund anzugeben, können Sie den Befehl Stop-Computer
verwenden und ihm die Option -ComputerName
übergeben, um den Namen des entfernten Computers anzugeben.
> Stop-Computer -ComputerName “RemoteServer” -Comment “System upgrade”
Beachten Sie, dass Sie für die Verwendung des Befehls Stop-Computer
auf dem entfernten Computer über die erforderlichen Berechtigungen verfügen müssen. Sie müssen entweder ein Administrator auf dem entfernten Computer sein oder über die Berechtigung “Ändern der Systemeinstellungen” im Sicherheitsbereich “Systemsteuerung” verfügen, um das Herunterfahren des entfernten Computers ausführen zu können.
Zeit und Ursache des Herunterfahrens auslesen (remote)
Um das Ereignisprotokoll auf einem anderen Server mit PowerShell auszulesen, können Sie den Befehl Get-EventLog
verwenden und ihm die Option -ComputerName
übergeben, um den Namen des entfernten Servers anzugeben:
Dieser Befehl liest das Systemereignisprotokoll vom Server “RemoteServer” aus und gibt die Einträge mit der Event-ID 6006 aus, die anzeigen, wann der Server heruntergefahren wurde. Wie im vorherigen Beispiel werden diese Einträge nach dem Zeitpunkt ihrer Erstellung sortiert und dann die Felder “TimeGenerated”, “EventID” und “Message” ausgegeben.
Beachten Sie, dass Sie für die Verwendung des Befehls Get-EventLog
auf dem entfernten Server über die erforderlichen Berechtigungen verfügen müssen.
Rechte für den Remote-Zugriff auf den Eventlog
Um den Befehl Get-EventLog
auf einem entfernten Server ausführen zu können, benötigen Sie über die erforderlichen Berechtigungen, um auf das Ereignisprotokoll des entfernten Servers zugreifen zu können. In der Regel müssen Sie über die Berechtigung “Lesen” im Sicherheitsbereich “Ereignisprotokolle” verfügen, um das Ereignisprotokoll auslesen zu können.
Sie können überprüfen, ob Sie die erforderlichen Berechtigungen haben, indem Sie auf dem entfernten Server die Ereignisanzeige öffnen und versuchen, das Systemereignisprotokoll anzuzeigen. Wenn Sie die Berechtigungen haben, sollten Sie in der Lage sein, das Protokoll anzuzeigen und Einträge daraus auszulesen. Wenn Sie keine Berechtigungen haben, erhalten Sie möglicherweise eine Fehlermeldung, die besagt, dass Sie keine Zugriffsberechtigungen haben.
Sie können auch den Befehl Get-EventLog
auf dem entfernten Server ausführen und ihm die Option -ErrorAction Stop
übergeben, um das Skript anzuhalten und eine Fehlermeldung anzuzeigen, falls Sie keine Berechtigungen haben.