Woher weiß ich, wann mein Computer mit Windows 7 zuletzt neu gestartet wurde?
Ich bevorzuge eine Lösung, die nicht das Durchsuchen des Ereignisprotokolls beinhaltet, sondern so etwas wie wmic
oder vielleicht cmd
Befehle.
Woher weiß ich, wann mein Computer mit Windows 7 zuletzt neu gestartet wurde?
Ich bevorzuge eine Lösung, die nicht das Durchsuchen des Ereignisprotokolls beinhaltet, sondern so etwas wie wmic
oder vielleicht cmd
Befehle.
Antworten:
systeminfo
Befehl ist fast richtig, was Sie brauchen. Auf Englisch Windows 7 können Sie auch:
systeminfo | find /i "Boot Time"
Oder mit Hilfe von WMIC :
wmic os get lastbootuptime
Der Hauptunterschied zwischen Windows 7 und Windows XP besteht darin, dass Microsoft unter Windows 7 nur die letzte Startzeit anzeigen kann.
Auch im Task-Manager:
systeminfo
lokalisiert ist. Dies "Boot Time"
gilt nur für englische Versionen von Windows.
systeminfo | find /i "Systemstartzeit"
für deutsch
Eine andere Möglichkeit besteht darin, die folgende Befehlszeile zu verwenden, die sowohl unter Windows XP als auch unter Windows 7 funktioniert:
net statistics workstation
Es hat den Vorteil, dass es systeminfo
beim Formatieren des Datums schneller als die Alternative ist (was wmic
nicht der Fall ist). Sie erhalten auch ein paar andere Informationen, die nützlich sein können, wenn Sie diesen Befehl zum Debuggen eines Computers verwenden (da Sie speziell danach fragen cmd
, gehe ich davon aus, dass Sie dies nicht programmgesteuert tun).
Weitere Informationen zum net statistics
Befehl finden Sie hier: http://technet.microsoft.com/en-us/library/bb490714.aspx
Hier ist ein Beispiel für das Ergebnis (unter Verwendung einer französischen Kopie von Windows 7 Pro SP1 x64 ist die Benutzersprache für die Befehlszeile nicht wichtig):
(Der Computername ist absichtlich verschwommen)
Weitere Informationen zur Genauigkeit bei der Bestimmung der Systemverfügbarkeit finden Sie unter http://en.wikipedia.org/wiki/Uptime .
Wichtiger Hinweis : Diese Methode bestimmt, wann der Computer das letzte Mal gestartet wurde, nicht die Betriebszeit. Die 2 Zahlen sind unterschiedlich, wenn Sie den Energiesparmodus / Ruhezustand verwenden.
wmic
Task-Manager und systeminfo
alle Elemente ab der aktuellen Zeit um die Anzahl der Ticks, die der PC ausgeführt hat, rückwärts zu zählen scheinen Laufen. Aber wenn Sie Ihren Computer in dem Ruhezustand (oder Ruhezustand) viel, wie ich, die tatsächliche Gesamtlaufzeit ist viel kürzer als die Zeit seit dem letzten Systemstart (nur 30 Tage in meinem Fall im Laufe der letzten Monate), Abwerfen diese Berechnung vollständig.
Da ist das LastBootUpTime
Eigentum der Win32_OperatingSystem
Klasse. Sie können WMIC mit diesem Befehl verwenden:
wmic os get lastbootuptime
Oder wenn Sie Powershell verwenden, können Sie die Uhrzeit in ein besser lesbares Format als das ärgerliche WMI-Datum / Uhrzeit-Format konvertieren:
Get-WmiObject -class Win32_OperatingSystem | Select-Object __SERVER,@{label='LastBootUpTime';expression={$_.ConvertToDateTime($_.LastBootUpTime)}}
Beachten Sie, dass Sie in späteren Versionen von PowerShell auch Get-CimInstance verwenden können, das den Wert automatisch als Datum und Uhrzeit zurückgibt:
Get-CimInstance -Class Win32_OperatingSystem | Select-Object LastBootUpTime
Das einzig irritierende ist, dass Get-CimInstance manchmal den Namen einiger Systemfelder von WMI-Objekten ändert, wie hier __SERVER. Sie müssten entweder CSName
oder verwenden PSComputerName
, was bei mir zu funktionieren scheint.
20121217175810.414696+120
Ich glaube, ich brauche einen verdammt guten Taschenrechner, um die Zeit zu berechnen
CIM_DATETIME
Format, das vom Standard verlangt wird. Es ist yyyymmddHHMMSS.mmmmmmsUUU
mit 24 Stunden Zeit. Hier ist Ihr letzter Neustart am 17. Dezember 2012 um 17:58 Uhr. msdn.microsoft.com/en-us/library/windows/desktop/…
Bitte beachten Sie, dass der Befehl , wie von Alex ausgeführt,/sleepstudy
erst unter Windows 8.1 hinzugefügt wurde. / systempowerreport könnte stattdessen funktionieren.
Beachten Sie, dass einige dieser anderen Antworten für mich nie funktionierten, wie beispielsweise das Durchsuchen des Ereignisprotokolls, bei dem immer einige Einträge fehlten. @ Florisz Antwort ist auch in dieser Hinsicht richtig. Hier ist meine Lösung:
Führen Sie in einer Administrator-Cmd-Shell den folgenden Befehl aus:
powercfg /sleepstudy /output sleepstudy.html
Öffnen Sie dann die Datei sleepstudy.html
in einem Browser. Sie werden mit erstaunlich übersichtlichen Statistiken über das Herunterfahren / Neustarten / Standby / Ruhezustand der letzten drei Tage begrüßt . (Führen Sie sie daher regelmäßig aus, wenn Sie dies benötigen.)
Ein Beispiel für eine Ausgabe: (AFAIR Showdown (Hybrid)
bedeutet schneller Start)
Noch eine andere Möglichkeit, in einer Batch-Datei die Boot-Zeit mit wmic zu ermitteln, jedoch in einer für Menschen lesbaren Form:
for /f %%a in ('WMIC OS GET lastbootuptime ^| find "."') DO set DTS=%%a set BOOTTIME=%DTS:~0,4%-%DTS:~4,2%-%DTS:~6,2% %DTS:~8,2%:%DTS:~10,2% echo DTS : %DTS% echo BOOTTIME :%BOOTTIME%
Ausgabe :
DTS: 20170308073729.491206 + 060
BOOTTIME: 2017-03-08 07:37
set BOOTTIME
.
So erhalten Sie es in PowerShell:
Function Get-LastBoot {
if ($Host.Version.Major -lt 3) {
Get-WmiObject win32_operatingsystem | Select-Object CSname, @{n = 'LastBootUpTime'; e = {$_.ConverttoDateTime($_.lastbootuptime)}}
}
else {
Get-CimInstance -ClassName win32_operatingsystem | Select-Object CSname, LastBootUpTime
}
}
Hier ist das Ergebnis:
CSname LastBootUpTime
------ --------------
LAPTOP1 2018-09-07 08:57:02
In nahezu jeder Windows-Version können Sie den Zeitstempel in der Auslagerungsdatei überprüfen.
dir /a:hc:\pagefile.sys
Suchen / filtern Sie anhand einer ähnlichen ServerFault-Frage das Windows- Systemereignisprotokoll nach der Ereignis-ID 6009
.
Unter Windows 10: Event Viewer > Windows Logs > System
und dann die Filter Current Log...
Aktion.
Sie können hierfür PowerShell verwenden.
Get-WinEvent -LogName Microsoft-Windows-Diagnostics-Performance/Operational | Where { $_.Id -eq 200 }
Dadurch erhalten Sie eine Liste der protokollierten Abschaltzeiten.
Alternativer Befehl, besser optimiert für Remoteverbindungen:
Get-WinEvent -FilterHashtable @{LogName = "Microsoft-Windows-Diagnostics-Performance/Operational"; Id = 200; }
Beispielausgabe:
TimeCreated Id LevelDisplayName Message
----------- -- ---------------- -------
2017-01-28 18:25:46 200 Critical Windows has shutdown
2016-11-01 19:55:21 200 Error Windows has shutdown
2016-10-29 00:18:38 200 Critical Windows has shutdown
2016-10-26 23:16:55 200 Warning Windows has shutdown
2016-10-26 15:37:40 200 Warning Windows has shutdown
2016-10-26 02:18:24 200 Warning Windows has shutdown
2016-10-26 02:10:34 200 Warning Windows has shutdown
2016-10-26 02:04:01 200 Warning Windows has shutdown
2016-10-25 14:23:11 200 Warning Windows has shutdown
2016-10-25 13:07:46 200 Error Windows has shutdown
2016-10-25 00:18:12 200 Error Windows has shutdown
2016-10-19 13:16:39 200 Critical Windows has shutdown
Mit dem folgenden Befehl erhalten Sie eine Liste der protokollierten Startzeiten.
Get-WinEvent -LogName Microsoft-Windows-Diagnostics-Performance/Operational | Where { $_.Id -eq 100}
Alternativer Befehl, besser optimiert für Remoteverbindungen:
Get-WinEvent -FilterHashtable @{LogName = "Microsoft-Windows-Diagnostics-Performance/Operational"; Id = 100; }
Beispielausgabe:
TimeCreated Id LevelDisplayName Message
----------- -- ---------------- -------
2017-10-07 21:35:38 100 Critical Windows has started up
2017-01-28 18:25:48 100 Critical Windows has started up
2016-12-11 17:45:07 100 Critical Windows has started up
2016-11-16 13:26:52 100 Critical Windows has started up
2016-11-01 19:55:21 100 Critical Windows has started up
2016-10-29 00:18:39 100 Critical Windows has started up
2016-10-26 23:16:55 100 Error Windows has started up
2016-10-26 14:51:07 100 Error Windows has started up
2016-10-26 02:24:01 100 Error Windows has started up
2016-10-26 02:18:24 100 Critical Windows has started up
2016-10-26 02:10:34 100 Error Windows has started up
2016-10-26 02:04:01 100 Critical Windows has started up
2016-10-25 14:23:12 100 Error Windows has started up
2016-10-25 13:07:47 100 Error Windows has started up
2016-10-25 12:56:23 100 Error Windows has started up
2016-10-19 13:16:39 100 Critical Windows has started up
Ich habe dies auf PowerShell 5.1 und Windows 10.0.15063 getestet. Es sollte aber auch unter Windows 7 funktionieren, sofern Sie mindestens PowerShell 3.0 installiert haben. Beachten Sie, dass Sie es als Administrator ausführen müssen.
Die vollständige Dokumentation zum Befehl finden Sie hier: docs.microsoft.com
Ein paar Antworten erwähnen net statistics workstation
und ich habe festgestellt, dass beide:
net statistics server
und
net statistics workstation
sollte Daten bezüglich des letzten Starts in der Statistics since ...
Leitung liefern .
Einige Betriebssystemversionen (wie z. B. Svr2008 / 6.0) geben jedoch 1/1/1980 12:00
bei Verwendung das Datum zurück server
. Also werde ich standardmäßig auf workstation
.
Sie können auch einige der Befehle abkürzen, net stats workstation
um die gleichen Ergebnisse zu erzielen. Wenn Sie von System zu System springen, ist das Standard-CMD-Feld nicht groß genug, um alle Ergebnisse des Befehls anzuzeigen. Also leite ich die Ausgabe weiter more
, um zu vermeiden, dass nach oben gescrollt wird, um die Startzeit zu sehen. Daher lautet mein Standardbefehl:
net stats workstation | more
Ich möchte hinzufügen, dass all diese Befehle Ihnen wirklich die Zeitstempel geben, wenn ein Neustart oder Neustart durchgeführt wird. Und nicht, wenn ein Herunterfahren und Starten erfolgt ist. Nach dem Herunterfahren und Starten gibt die letzte Startzeit die Zeit an, zu der das System wirklich neu gestartet wurde, und nicht die tatsächliche Startzeit. Das Herunterfahren / Starten führt also zum gleichen Ergebnis wie das Zurückkehren von suspend / hybernnate für den LastBootUpTime-Zeitstempel.
Gleich wie Max antworte ...
for /f %%a in ('WMIC OS GET lastbootuptime ^| find "."') DO set DTS=%%a
set BOOTTIME=%DTS:~0,4%-%DTS:~4,2%-%DTS:~6,2% %DTS:~8,2%:%DTS:~10,2%
echo DTS : %DTS%
echo BOOTTIME :%BOOTTIME%
... aber im oneliner:
for /f %a in ('WMIC OS GET lastbootuptime ^| find "."') DO set DTS=%a && echo %DTS:~0,4%-%DTS:~4,2%-%DTS:~6,2% %DTS:~8,2%:%DTS:~10,2%
Diese wmi-Implementierung mag ein wenig chaotisch erscheinen, ist aber im Vergleich zu anderen Powershell- oder Systeminfo-Implementierungen sehr schnell und Sie können das Format leicht ändern, da es explizit im Code enthalten ist.
Vielen Dank, Max.