Windows 10 Bootzeit und Betriebszeit: PowerShell-Einblicke

Windows-Uptime ist eine Messung, die viele Serveradministratoren zur Fehlerbehebung täglicher Probleme in der Umgebung verwenden. In diesem Artikel erfahren Sie, wie Sie die Startzeit in Windows 10 und Windows Server überprüfen können. Sie können die Methode verwenden, die Ihnen am einfachsten erscheint. Verwenden Sie diesen Artikel als zukünftige Referenz.

Der Artikel ist in zwei Hauptteile unterteilt: Überprüfung der Serverbetriebszeit und Ermittlung der historischen Windows-Betriebszeit. Der erste Teil konzentriert sich darauf, wie lange der Computer seit dem letzten Neustart aktiv war. Dies wird in diesem Artikel als „aktuelle“ Betriebszeit bezeichnet.

Der zweite Teil des Artikels konzentriert sich auf die Ermittlung der „historischen“ Betriebszeit, d.h. wie lange ein Windows-System zwischen mehreren Neustarts aktiv war. Mithilfe von PowerShell erfahren Sie, wie Sie das Windows-Ereignisprotokoll analysieren, um historische Betriebszeiten abzurufen.

So überprüfen Sie die Startzeit in Windows 10 und Windows Server

Zum Einstieg werfen wir nun einen Blick auf einige verschiedene Möglichkeiten, um die aktuelle Windows-Betriebszeit zu finden.

In diesem Abschnitt wird Ihnen anhand einer Demonstration gezeigt, wie Sie die Startzeit in Windows 10 über lokale Befehle auf einem Windows-System überprüfen können. Beachten Sie jedoch, dass Sie mit PowerShell Remoting diese Überprüfungen auch remote durchführen können (mit Ausnahme des Task-Managers).

Task-Manager

Eine der einfachsten und unkompliziertesten Möglichkeiten, die Betriebszeit zu ermitteln, besteht darin, einfach den Task-Manager zu öffnen.

Um die Windows-Betriebszeit mit dem Task-Manager zu überprüfen, klicken Sie mit der rechten Maustaste auf die Windows-Taskleiste und wählen Sie Task-Manager aus oder drücken Sie Strg+Shift+Esc. Sobald der Task-Manager geöffnet ist, klicken Sie auf den Reiter Leistung. Unter dem Reiter „Leistung“ sehen Sie das Label Laufzeit.

Finding Windows uptime with task manager

Ereignisanzeige

Die Ereignisanzeige wird von den meisten Sysadmins regelmäßig verwendet und ist daher eine gute Option für eine nicht mit der Befehlszeile verbundene Methode zur Abrufung der Betriebszeit. Die Ereignis-IDs 6005 und 6006 können verwendet werden, um zu identifizieren, wann der Ereignisprotokolldienst startet oder stoppt, was während des Start-/Herunterfahrzeiten geschieht. Befolgen Sie diese Schritte, um die Betriebszeit über die Ereignisanzeige zu ermitteln:

  • Rufen Sie das Startmenü auf und suchen Sie nach Ereignisanzeige, Sie können auch über Computerverwaltung darauf zugreifen.
  • Auf der linken Seite erweitern Sie den Abschnitt „Windows-Protokolle“ und wählen Sie „System“ aus
  • Da wir nur systembezogene Ereignisse abfragen, klicken Sie auf „Aktuelles Protokoll filtern…“ auf der rechten Seite Ihres Fensters
  • Im Feld „Ereignis-ID“ (standardmäßig mit dem Text „Alle Ereignis-IDs“ vorausgefüllt) müssen wir nach unseren relevanten Ereignis-IDs suchen. Geben Sie „6005, 6006“ ein und klicken Sie dann auf OK

Sie können dann die beiden Zeiten vergleichen, um eine Gesamtbetriebszeit zu erstellen. Da viele Instanzen dieser Ereignisse gespeichert werden, können wir die Historie der Betriebszeiten abfragen!

Sie haben jetzt gefilterte Ereignisprotokolle, die Ihnen nicht nur die letzte Zeit, sondern alle bekannten Zeiten anzeigen, zu denen ein Startvorgang/Herunterfahren stattgefunden hat.

PowerShell

PowerShell bietet verschiedene Möglichkeiten, um die Betriebszeit abzurufen. Sie können entweder WMI abfragen oder das Windows-Ereignisprotokoll verwenden.

Bei der Abfrage von WMI können Sie die Klasse Win32_OperatingSystem abfragen und die Eigenschaft LastBootUpTime auswählen, wie unten gezeigt.

PS51> Get-CimInstance Win32_OperatingSystem | Select-Object LastBootUpTime

LastBootUpTime      
--------------      
9/25/2019 9:37:37 PM

Um das Ereignisprotokoll über PowerShell abzufragen, verwenden Sie das Cmdlet Get-WinEvent. Sie müssen nach Ereignis-IDs 6005 oder 6006 suchen, die den letzten Startzeitpunkt des Computers anzeigen.

PS51> Get-WinEvent -ProviderName EventLog | Where-Object {$_.Id -eq 6005 -or $_.Id -eq 6006} | Select-Object -First 1 TimeCreated

TimeCreated         
-----------         
9/25/2019 9:37:52 PM

WMIC

WMIC bietet eine Befehlszeilenschnittstelle für WMI und ist eine bewährte Methode, die seit vielen Jahren verwendet wird. Um die Betriebszeit über WMIC abzufragen, verwenden Sie erneut die WMI-Klasse Win32_OperatingSystem, jedoch etwas versteckt. Wie unten gezeigt, können Sie die WMIC-Syntax os get lastbootuptime verwenden, um den letzten Startzeitpunkt des Servers zurückzugeben.

> wmic os get lastbootuptime

LastBootUpTime             

20190925213737.500000-240

Sie müssen nichts herunterladen, um WMIC nutzen zu können, da es bereits mit Windows vorinstalliert ist.

Systeminformationsdienstprogramm

Der Befehl systeminfo zeigt detaillierte Konfigurationsinformationen über einen Computer an und kann verwendet werden, um die Systembetriebszeit abzufragen. Mit dem integrierten Befehlszeilentool find können Sie den Text analysieren, um die benötigten Daten abzurufen.

Öffnen Sie einfach die Eingabeaufforderung oder PowerShell und geben Sie systeminfo | find ein.

> systeminfo | find "System Boot Time:"

System Boot Time:          9/25/2019, 9:37:37 PM

Sie müssen nichts herunterladen, um systeminfo zu nutzen, da es vorinstalliert ist mit Windows.

Net-Statistikbefehl

Sie können auch schnell die Betriebszeit über Net Statistics oder allgemein bekannt als net stats abfragen. Der Befehl net stats gibt allgemeine Informationen über Ihre Sitzung zurück. Sie können unten die Zeile Statistik seit… sehen. Dieses Datum gibt an, wann die Maschine gestartet wurde.

> net stats srv

Workstation Statistics for \\NATES-PC


Statistics since 9/25/2019 9:37:52 PM

--SNIP--

The command completed successfully.

Betriebszeitbefehl

Wenn Sie ein kleines, portables Dienstprogramm benötigen, um die Betriebszeit von Windows zu ermitteln, schauen Sie sich das Uptime-Tool von NeoSmart Technologies an. Dieses Dienstprogramm eignet sich perfekt, um die Betriebszeit auf jeder Windows-Version schnell abzufragen. Der Hauptvorteil dieses Tools ist der Komfortfaktor. Wenn Sie es mehrmals täglich verwenden, sollten Sie diese Methode in Betracht ziehen.

Nach dem Herunterladen des Tools extrahieren Sie die Datei uptime.exe in %WinDir%\System32. Öffnen Sie dann eine Eingabeaufforderung und geben Sie einfach uptime ein.

Uptime tool

Um dieses Tool remote auszuführen, müssen Sie es zunächst auf die Windows-Systeme kopieren, auf denen Sie die Betriebszeit überprüfen möchten.

Vorstellung des Skripts Get-ServerUptimeReport

Um den PowerShell-Code nicht selbst schreiben zu müssen, laden Sie ein Community-Skript mit dem Namen Get-ServerUptimeReport.ps1 herunter.

PS51> Install-Script -Name Get-ServerUptimeReport

Dieses Skript ermöglicht es Ihnen, einen Computernamen als Parameter anzugeben. Es analysiert dann das Ereignisprotokoll System des Computers und sucht nach einem Start- und einem Stoppereignis, um sie zu vergleichen. Anschließend gibt es die Gesamtzeit zurück, in der der Server online war, bis das Ereignisprotokoll zurückgesetzt wurde.

Hier ist ein Beispiel für die Verwendung dieses Skripts auf einem Server. Es liefert die Gesamtlaufzeit für alle Ereignisse im Ereignisprotokoll des Servers zurück, einschließlich der aktuellen Laufzeit.

PS51> ./Get-ServerUptimeReport.ps1 -ComputerName sqlsrv1

Startup Shutdown Uptime (Days) Uptime (Min)
------- -------- ------------- ------------
9/16/2017 12:40:00 PM 9/22/2017 4:20:11 PM 6.15 8860.18
9/16/2017 10:22:49 AM 9/16/2017 12:22:36 PM 0.08 119.79
9/16/2017 3:22:12 PM 9/22/2017 4:20:11 PM 6.04 8697.98

Ermittlung der Windows-Laufzeit auf vielen Servern

Dieses Skript ist eine schnelle Möglichkeit, die Laufzeit eines einzelnen Servers über mehrere Tage hinweg zu ermitteln. Aber was ist, wenn Sie diese Informationen gleichzeitig für viele Server benötigen? Dazu können Sie eine Liste von Servern erstellen und dann jeden Computernamen nacheinander an dieses Skript übergeben.

Als Beispiel definieren Sie alle Ihre Server in einem Array in der PowerShell-Konsole. In diesem Beispiel wird die Variable für das Array $servers genannt.

In der Realität könnten Sie jedoch Servernamen aus Active Directory, Hyper-V oder einer Textdatei abrufen. Solange Sie ein Array von Servernamen erstellen können, sind Sie in Ordnung.

Definieren Sie alle Servernamen und iterieren Sie dann über jeden Server mit einer Schleife, wie unten gezeigt.

$servers = 'WEBSRV1','SQLSRV1'
foreach ($server in $servers) {
	Get-ServerUptimeReport.ps1 -ComputerName $server
}

Startup Shutdown Uptime (Days) Uptime (Min)
------- -------- ------------- ------------
9/16/2017 12:45:48 PM 9/22/2017 4:25:39 PM 6.15 8859.86
9/16/2017 10:42:52 AM 9/16/2017 12:42:34 PM 0.08 119.7
9/16/2017 2:42:17 PM 9/22/2017 4:25:39 PM 6.07 8743.38
9/16/2017 12:40:00 PM 9/22/2017 4:25:39 PM 6.16 8865.65
9/16/2017 10:22:49 AM 9/16/2017 12:22:36 PM 0.08 119.79
9/16/2017 3:22:12 PM 9/22/2017 4:25:39 PM 6.04 8703.46

Dieser Code funktioniert, aber Sie können nicht feststellen, auf welchen Server sich jede Zeile bezieht. Fügen Sie der Ausgabe einen Servernamen hinzu, wie unten gezeigt, indem Sie eine berechnete Eigenschaft verwenden.

$servers = 'WEBSRV1','SQLSRV1'
foreach ($server in $servers) {
	Get-ServerUptimeReport.ps1 -ComputerName $server | Select-Object -Property *,@{n='ServerName';e={$server}}
}

Startup Shutdown Uptime (Days) Uptime (Min) ServerName
------- -------- ------------- ------------ ----------
9/16/2017 12:45:48 PM 9/22/2017 4:34:59 PM 6.16 8869.19 WEBSRV1
9/16/2017 10:42:52 AM 9/16/2017 12:42:34 PM 0.08 119.7 WEBSRV1
9/16/2017 2:42:17 PM 9/22/2017 4:34:59 PM 6.08 8752.71 WEBSRV1

Startup Shutdown Uptime (Days) Uptime (Min) ServerName
------- -------- ------------- ------------ ----------
9/16/2017 12:40:00 PM 9/22/2017 4:35:01 PM 6.16 8875.01 SQLSRV1
9/16/2017 10:22:49 AM 9/16/2017 12:22:36 PM 0.08 119.79 SQLSRV1
9/16/2017 3:22:12 PM 9/22/2017 4:35:01 PM 6.05 8712.81 SQLSRV1

Jetzt haben wir ein großartiges kleines Werkzeug, das uns einen schnellen Bericht über die Laufzeit unserer Server im Laufe der Zeit liefert!

Zusammenfassung

Sie haben nun viele verschiedene Möglichkeiten gesehen, die Windows-Betriebszeit zu ermitteln. Unabhängig von der gewählten Option erhalten Sie die gleichen Informationen. Wählen Sie die beste Option für Ihren eigenen Kontext aus.

Und denken Sie daran, wenn Sie einen historischen Bericht über die Betriebszeit benötigen, vergessen Sie nicht das PowerShell-Skript Get-ServerUptimeReport!

Source:
https://adamtheautomator.com/windows-uptime/