Wie lange läuft mein PC schon? – PC Laufzeit auslesen unter Windows 10

Die Laufzeit des Computers und somit auch der Zeitpunkt des letzten Systemstarts könnte eine Information sein, die wohl nicht nur Administratoren interessiert. Auch für Eltern, die kontrollieren wollen seit wann der Nachwuchs schon vor dem eckigen Kasten oder dem Notebook sitzt, wird es wohl helfen die Laufzeit des Computers anzuzeigen. Manche Seite relativ namhafter PC-Zeitschriften zeigt hierzu eine relativ “einfache” Methode anhand des Task Managers. Diese kann aber leider unter Windows 10 zu deutlichen Missverständnissen führen. Eine idiotensichere Methode ist dies nämlich ganz und gar nicht. Man sollte den Kindern oder Usern nicht aufgrund dieser ausgelesenen Info eine Standpauke halten 😉

Wieso das so ist und wie man die “richtige” PC-Laufzeit unter Windows 10 anzeigen kann erfährst du in diesem Artikel.

Kurzanleitung für Ungeduldige

Wer keine Zeit hat und sich nicht für die ausführliche Erläuterung interessiert findet hier eine Kurzanleitung. Unter einem normal konfigurierten Windows 10 ist der “Hibernate”-Modus nicht deaktiviert. Dann bekommt man mit folgender Abfrage für die Kommandozeile auf jeden Fall den Zeitpunkt, zu dem man den Computer zuletzt eingeschaltet hat und er hochgefahren ist:

In der Powershell erhält man die gleiche Auskunft so:

Die Laufzeit seit dem letzten Einschalten des Computers kann man durch die Differenz zwischen der aktuellen Zeit (Get-Date) und der Änderungszeit der “hiberfil.sys” (LastWriteTime) ermitteln:

 

 

Systemlaufzeit unter Windows 10 auslesen – so einfach?!

Auf den meisten Seiten findet man folgenden einfachen Tipp um die Laufzeit des Computers und den letzten Startzeitpunkt des Computers herauszufinden. Hierzu soll es genügen einfach nur den Task Manager zu öffnen und im Reiter “Leistung” den Punkt “CPU” zu öffnen und sich die Betriebszeit anzusehen:

Betriebszeit im TaskManager bei Windows 10

Bevor man nach diesem Anblick allerdings Hausarrest erteilt, weil die Kinder anscheinend den PC vier Tage lang durchlaufen ließen oder den Kollegen in der Firma zurechtweist den Computer gefälligst abends auszumachen soll hier gesagt sein, dass diese “Betriebszeit” nicht dem entspricht was man wohl weitläufig unter dem Begriff verstehen würde. Denn tatsächlich hatte ich meinen Computer erst etwa eine Stunde bevor dieser Screenshot entstanden ist eingeschaltet. Ebenfalls Tools wie AIDA32 zeigen diese abstrus wirkende Betriebszeit für den Computer an:

Rechnerlaufzeit in AIDA32

Auch in Remote-Tools wie dem TeamViewer kann man die Anzeige der Betriebszeit oder des Startzeitpunktes nicht ernst nehmen:

Startzeit in TeamViewer

Ebenso kann man Tools wie BGInfo vergessen, da diese Tools alle nur die Daten abgreifen die man auch im TaskManager bekommt.

Warum eine solche merkwürdige Betriebszeit an dieser Stelle steht und warum diese trotzdem korrekt ist folgt im nächsten Abschnitt.

 

 

Windows 10 und das Ausschalten und Neustarten – Was passiert da wirklich?

Bei Windows 10 gibt es grundsätzlich ein Problem bei diesen Methoden um den letzten Systemstart herauszufinden. Denn seit Einführung von Windows 10 fährt man den Computer, sofern man es nicht aus bestimmten Gründen umkonfiguriert hat, niemals wirklich herunter!

Windows 10 neu starten oder herunterfahrenStattdessen wird der Computer auch mit dem “Herunterfahren” unter “Beenden” nicht richtig ausgeschaltet wie noch unter Windows 7 oder Windows 8. Der PC geht seit Windows 8.1 zwar aus, nutzt aber den sogenannten “Hibernate”-Modus um beim nächsten Start schneller zur Verfügung zu stehen.

Hierzu wird der Inhalt des Arbeitsspeichers auf die Festplatte bzw. in die Auslagerungsdatei geschrieben und steht beim nächsten Windows-Start wieder zur Verfügung. Dem ein oder anderen ist vielleicht aufgefallen dass Anwendungen beim nächsten Hochfahren des Rechners nicht unbedingt geschlossen sind. Diese machen dann dort weiter wo man aufgehört hat.

Deshalb sollte man sich für Windows 10 folgendes merken:

(System-)Betriebszeit = die vergangene Laufzeit seit dem letzten “richtigen” Neustart des Computers

Dieses Verhalten war übrigens auch unter Windows 7 schon nicht anders wenn man den Computer selber in den “Ruhezustand” versetzt hat und dann erst einige Zeit später wieder eingeschaltet hat. Nur war es hier eher selten, dass man den Computer über Wochen lang immer wieder in den Ruhezustand versetzt hat anstatt ihn irgendwann nach erledigter Arbeit wieder herunterzufahren und auszuschalten.

 

 

Wann wurde der PC zuletzt eingeschaltet und hochgefahren?

Änderungszeitpunkt der hiberfil.sys (Ruhezustandsdatei) ermitteln

Wie eingangs gezeigt lässt sich auch trotz aktiviertem Hibernate-Modus ermitteln wann der Computer hochgefahren wurde. Hierzu benötigt man nur das Änderungsdatum der für den Ruhezustand verwendeten hiberfil.sys-Datei.

Diesen Änderungszeitpunkt kann man natürlich nicht nur per Kommandozeile oder Powershell ermitteln, sondern auch ganz einfach manuell im Explorer in den Dateiegenschaften herausfinden:

Eigenschaften der hiberfil.sys

Berücksichtigen muss man allerdings dass die Systemdateien standardmäßig ausgeblendeet sind und man diese nicht automatisch unter Laufwerk C:\ finden wird.

 

Kommandozeile und Powershell

Den Änderungszeitpunkt der hiberfil.sys und somit den Zeitpunkt des letzten Einschaltens/Hochfahrens kann man in der Kommandozeile auch mit folgendem Befehl herausfinden, wie bereits in der Kurzanleitung gezeigt:

In der Powershell könnte man die gleiche Info so ermitteln:

 

 

Wann wurde der PC zuletzt neu gestartet?

Änderungszeitpunkt der pagefile.sys (Auslagerungsdatei) ermitteln

Wann der Computer richtig neu gestartet worden ist und nicht nur aus dem Ruhezustand geholt worden ist, kann man nicht nur im Task Manager erkennen. Wie für das Hochfahren lässt sich dies auch am Änderungszeitpunkt einer Datei erkennen. In diesem Fall anhand der Auslagerungsdatei pagefile.sys die ebenfalls versteckt als Systemdatei unter Laufwerk C:\ liegt:

Eigenschaften der pagefile.sys

Diese Info kann tatsächlich relativ wichtig sein um herauszufinden ob ein Endanwender der Aufforderung seinen Rechner neu zu starten auch wirklich Folge geleistet hat.

 

Kommandozeile und Powershell

Den Änderungszeitpunkt der pagefile.sys und somit den Zeitpunkt des letzten richtigen Neustarts kann man in der Kommandozeile auch mit folgendem Befehl herausfinden:

Eine andere Möglichkeit ist dieser Befehl, der allerdings von den Spracheinstellungen des Systems abhängig ist:

In der Powershell geht es so:

 

 

Wie lange läuft mein PC schon?

Laufzeit des Computers in der GUI ermitteln

Betriebsdaueranzeige in der GUI beim Netzwerkadapter-StatusDie einfachste Möglichkeit um die tatsächliche Laufzeit seit dem letzten Hochfahren in der Windows-Oberfläche zu ermitteln führt über einen kleinen Umweg. Im Task Manager gibt es leider keine Extra-Anzeige für die tatsächliche Laufzeit seit dem Einschalten. Deshalb habe ich mich stattdessen bei den Netzwerkadaptern umgesehen.

Denn hier wird einem angegeben seit wann der Netzwerkadapter mit dem Netzwerk verbunden ist. Dieser Verbindungsaufbau findet erst statt wenn Windows aus dem Hibernate-Modus wieder hochgefahren wurde. Dieser Wert entsprach bei meinen Tests auch wirklich der Laufzeit die mein Computer hatte nachdem ich ihn morgens eingeschaltet habe. Obwohl die Systembetriebszeit im Task Manager schon mehrere Tage betrug wurd hier der “korrekte” Wert ausgewiesen.

Das praktische an dieser Methode ist, dass man direkt die Laufzeit erfährt und nicht nur den Startzeitpunkt. So muss man nicht selber rechnen 😉

 

Laufzeit des Computers in der Powershell ermitteln

Um die Laufzeit seit dem letzten Hochfahren des Computers in der Powershell zu bekommen, kann man den bereits gezeigten Powershell-Schnipsel verwenden:

Statt diesem Einzeiler kann man das ganze auch mit Variablen umständlicher mit der Bildung einer Timespan realisieren:

Wenn man sich das Ergebnis in eine Variable speichert kann man damit natürlich noch irgendetwas anderes machen. Oder man kann das Ergebnis auch irgendwo ablegen um z. B. als Administrator Zugriff darauf zu bekommen.

Der Parameter -Force ist an dieser Stelle um den Zugriff auf die versteckte Systemdatei zu bekommen.

An sich ist die Get-ChildItem-Funktion eigentlich übertrieben. Um die Eigenschaften einer einzelnen Datei zu bekommen reicht normalerweise auch Get-Item. Aber leider habe ich das für versteckte Systemdateien nicht hinbekommen, weshalb ich auf Get-ChildItem ausgewichen bin. Naja, man wird es verschmerzen können 😉

 

Apropros, unter Linux bekommt man die gleiche Auskunft einfach mit dem Befehl “uptime”:

PC-Laufzeit in Ubuntu anzeigen lassen

 

Weitere interessante Artikel zur Windows Powershell:

Welche PowerShell-Version habe ich? – PowerShell-Version anzeigen
Was ist PowerShellCore? Windows PowerShell unter Linux und MacOS?
Powershell und CMD: Clear um Konsole zu leeren?
Powershell: Sudo-Befehl wie unter Linux nutzen für Administratorrechte?
COM-Port eines Geräts ändern per Powershell
CMD/Powershell: Ping-Ergebnis mit Errorlevel auswerten
Powershell: Netzwerkadapter-Konfiguration ändern (IP-Adresse, Gateway, DNS, DHCP)
Powershell-Skript als Benutzer-Anmeldeskript in einer Domäne nutzen?
Powershell: Fenster nach Skriptausführung nicht automatisch schließen
Powershell: UTF8-Problem beim Export
XML-Bearbeitung mit Powershell
Replace und Escaping in Powershell
MessageBox mit Powershell auf anderen Computern anzeigen
While- und Until-Schleifen in PowerShell und Batch
Einfaches inkrementelles Backup mit Powershell
Einfache Außer-Haus-Sicherung mit Powershell
Schnittstelle von XML zu MS-SQL mit Powershell realisieren
Powershell: Automatische Anwendungssteuerung
Macht die ExecutionPolicy für Powershell-Skripte Sinn?
Wiederkehrende E-Mail-Abwesenheitsnotiz für Outlook mit Powershell
HyperV-Netzwerkadapter per Powershell umbenennen und entfernen
Powershell: DELL Service Tags auslesen
Powershell-Backup-Skript für den Thunderbird-Profilordner
Download-Skript in Powershell
Einfache Powershell-Skripte
Java-Anwendungen über CMD oder Powershell starten
Pfad im Explorer schneller kopieren – auch als vollständigen UNC-Pfad
Windows 11: Startmenü anpassen, klassische Taskleiste, links ausrichten
Wie lange läuft mein PC schon? – PC Laufzeit auslesen unter Windows 10
Windows 10: Standorttyp des Netzwerks ändern
Windows Server 2016: WSUS startet nicht vernünftig
 

 

Bericht mit Windows-Bordmitteln erstellen

Der Event Viewer ist leider nicht das übersichtlichste Tool und bietet keine schönen Exportmöglichkeiten. Allerdings bietet die Energieverwaltung in der Kommandozeile eine eingebaute Berichtsfunktion. Hierdurch lässt sich ein Bericht als html-Datei exportieren. Dazu braucht man nur folgendes in eine administrativen Kommandozeile abfeuern:

Der Bericht wird standardmäßig unter “C:\Windows\system32” als “sleepstudy-report.html” abgelegt.

Wer den Bericht woanders ablegen möchte kann dies mit dem Parameter “output”erledigen:

 

Die erstellte html-Datei lässt sich in einem beliebigen Browser öffnen und sieht etwa so aus:

System Power Report als html-Datei

Die “Active”-Zeit entspricht der Zeit, die der Computer seit dem letzten Einschalten gelaufen ist.

 

Logging mit Windows-Tasks selber machen

Eine weitere Methode um das Ein- und Ausschalten zu protokollieren kann man sich mit Hilfe von Windows-Tasks selbst basteln. Hierzu genügt es beispielsweise das aktuelle Datum und die Uhrzeit zusammen mit der durchgeführten Aktion in ein Logfile zu schreiben. Dieses Lofile könnte z. B. einfach nach dem Computer benannt sein und immer erweitert werden.

Selbstgemachtes log-file für die EinschaltzeitEin Windows-Task um den Computerstart zu protokollieren (oder zumindest die Anmeldung des Benutzers) müsste aufgrund des Hibernate-Problems bei dem Event “Beim Anmelden” ausgeführt werden:

Alternativ kann man das Skript auch in den Autostart-Ordner legen.

Ein Windows-Task um den Reboot zu protokollieren müsste aufgrund des Hibernate-Problems bei dem Event “Beim Start des Computers” ausgeführt werden:

 

 

Drittsoftware

Wie eingangs beschrieben kann man Programme wie AIDA32 für diesen Zweck vergessen. Allerdings gibt es von NirSoft das schöne Tool “TurnedOnTimesView”. Das Tool benötigt keine zusätzlichen Dateien und muss auch nicht installiert werden. Man kann es, ausreichend Rechte vorausgesetzt, auch für die Analyse von entfernten Rechnern nutzen. Es bedient sich bei den Angaben des EventViewers und kann als eine Art nettere Ansicht für diesen angesehen werden. Anstatt umständlich die passenden Events filtern zu müssen, werden einem nur die wichtigen Start- und Shutdown-Events angezeit:

Ausgabe von TurnOnTimesView

 

Wie sieht es eigentlich beim Windows Server aus?

Betriebszeit unter Windows Server 2022 im TaskManagerWindows Server werden im realen Betrieb natürlich nicht so oft heruntergefahren wie ein Client-System. Trotzdem habe ich mir das Verhalten mal unter Windows Server 2022 angesehen. Und hier zeigt der TaskManager die tatsächliche Laufzeit seit dem Starten nach einem ordnungsgemäßen Herunterfahren an, ohne das dafür ein Neustart nötig ist. Man findet auf Laufwerk C: auch keine “hiberfil.sys”. Ist auch logisch, da der Hibernate-Modus beim Server wohl nicht allzu viel Sinn macht.

Schreibe einen Kommentar