Wie protokolliere ich Start- und Herunterfahrzeiten in Windows 7?

18

Ich möchte die Zeiten protokollieren, in denen mein Computer gestartet und heruntergefahren wird. Ich brauche keine Diagnoseinformationen oder ähnliches, nur eine einfache Notiz von Datum und Uhrzeit, zB so etwas wie:

2011/04/29 08:17:34 AM Startup
2011/04/29 05:26:52 PM Shutdown

Wie kann ich das machen?

Meine bisherigen Google-Suchanfragen haben viele Leute nach einer Verkürzung der Windows-Startzeiten gefragt, aber nichts Interessantes für die anstehende Aufgabe.

Will Martin
quelle

Antworten:

26

Windows verwendet Ereignisprotokolle mit der Ereignisanzeige, um Folgendes zu protokollieren:

Die Ereignis-ID 6005 zeigt den Systemstart an

Die Ereignis-ID 6006 zeigt das Herunterfahren des Systems an

Sie sollten in der Ereignisanzeige eine benutzerdefinierte Ansicht erstellen , die diese beiden Ereignis-IDs filtert, wobei die Quelle das Ereignisprotokoll ist.

Dies ist der einfachste Weg.

Alternativ können Sie das PowerShell -Cmdlet Get-WinEvent verwenden, um einen benutzerdefinierten Filter zu erstellen und diese Elemente an eine Textdatei weiterzuleiten.

Oder ... Sie können das Get-EventLog verwenden, um ein benutzerdefiniertes Ereignisprotokoll (das Sie mit den benutzerdefinierten Ansichten erstellen ...) in eine Textdatei umzuleiten.

yeedl
quelle
Gibt es eine Möglichkeit, die Anmelde- und Ruhezeiten des Systems zu ermitteln?
Viktor Sehr
Ich habe keine Ahnung, wie man diese Ansichten erstellt, selbst nachdem ich diese Seiten gelesen habe. Aber es gibt einen einfacheren Weg. Öffnen Sie Event Viewer, klicken Sie auf Windows Logs-> System. Auf der rechten Seite gibt es Filter Current Log..., klicken Sie darauf und wenn das neue Fenster erscheint Einsatz 6006auf All Event ID'sund klicken Sie auf Ok. Dadurch werden nur Ereignisse zum Herunterfahren des Systems angezeigt. Machen Sie dasselbe für den Systemstart.
Machineaddict
Nützliches ...
Fernando Espinosa
1

6005 zeigt den Start der Protokollierung von Ereignissen an, aber ich gehe davon aus, dass er auch bei Neustarts angezeigt wird, dh Windows unterscheidet nicht zwischen einem vollständigen Start oder einem Warmstart.

Wenn nur der erste Start und der letzte Abschluss angestrebt werden sollen, müssen alle doppelten 6005-Einträge entfernt werden.

Bei mir ist Ereignis-ID 12 das allererste und Ereignis-ID 13 das letzte.

12: Die Beschreibung für Event ID (12) in Source (Microsoft-Windows-Kernel-General) wurde nicht gefunden. Entweder ist die Komponente, die dieses Ereignis auslöst, nicht auf dem Computer installiert oder die Installation ist beschädigt. Sie können die Komponente installieren oder reparieren oder versuchen, Description Server zu ändern.

13: Die Beschreibung für Event ID (13) in Source (Microsoft-Windows-Kernel-General) wurde nicht gefunden. Entweder ist die Komponente, die dieses Ereignis auslöst, nicht auf dem Computer installiert oder die Installation ist beschädigt. Sie können die Komponente installieren oder reparieren oder versuchen, Description Server zu ändern.

Die folgenden Informationen wurden mit dem Ereignis (Einfügezeichenfolgen) aufgenommen: 2012-12-25T18: 23: 26.070181000Z

PS: Abgesehen davon habe ich eine Reihe von Fällen, in denen einige 6005 protokolliert wurden, aber keine 6006, die folgen. Man muss die tatsächliche Abmeldung manuell hinzufügen, z. B. basierend auf dem letzten Ereignisprotokolleintrag an diesem Tag.

Mike994
quelle
1

Mit dem Get-EventLog von PowerShell wird die angeforderte Ausgabe von der folgenden (langen) Zeile in eine Textdatei ausgegeben:

Get-EventLog -LogName System | Where-Object {(($_.EventID -eq 6005) -or ($_.EventID -eq 6006)) -and ($_.TimeGenerated -gt [DateTime] "2017-05-01")} | Select-Object EventID, TimeGenerated, Message | Sort-Object -Property TimeGenerated | Foreach { if ($_.EventID -eq 6005) { $out = "Startup"  } else { $out = "Shutdown" + "`r`n"}  ($_.TimeGenerated.ToString() + '  ' + $out); } > C:\temp2\_ComputerStartsAndStops.log

Anmerkungen

  • Damit C:\temp2dies funktioniert, muss ein Verzeichnis vorhanden sein. Wenn es nicht vorhanden ist, erstellen Sie es oder ändern Sie den Einzeiler, um ein anderes (vorhandenes) Verzeichnis zu verwenden.
  • Ersetzen Sie " " durch " ", um die Ausgabe im ISO 8601- Format zu erhalten .TimeGenerated.ToString()TimeGenerated.ToString("s")
  • Im One-Liner ist ein Zeitfilter eingebaut (nur einschließlich Start und Herunterfahren nach dem 01.05.2017). Ändern Sie "2017-05-01" in etwas anderes, wenn ältere Starts und Abschaltungen erforderlich sind.
  • Wenn die Ausgabe in umgekehrter chronologischer Reihenfolge erfolgen soll, ersetzen Sie " Sort-Object" durch " Sort-Object -Descending".
  • Da Get-EventLog verwendet wird, funktioniert es auch unter älteren Windows-Versionen.

Anweisung

Der Einzeiler kann in ein Skript eingefügt werden, aber dann müssen die Berechtigungen berücksichtigt werden, bevor es funktioniert. Der einfachste Weg ist stattdessen:

  1. Öffnen Sie eine Windows-Eingabeaufforderung: Window+ R, geben Sie ein CMDund drücken Sie Enter.
  2. Tippen powershellund drücken Enter. (Unter Windows 10 kann PowerShell direkt mit Window+ Xund Auswahl von "Windows PowerShell" geöffnet werden. )
  3. Kopieren Sie den Einzeiler in die Zwischenablage.
  4. Einfügen in den Einzeiler: Alt+ SpaceBearbeitenEinfügen (in neueren Versionen von Windows funktioniert das normale Ctrl+ Vtatsächlich sowohl in CMD- als auch in PowerShell-Fenstern (beide werden jetzt unter conhost.exe ausgeführt)).
  5. Drücken Sie Enter
  6. Warten Sie, bis der Vorgang abgeschlossen ist (dies kann sehr lange dauern, insbesondere wenn es sich um eine alte Windows-Installation handelt).
  7. Das Ergebnis kann in der Datei gefunden werden C:\temp2\_ComputerStartsAndStops.log.
Peter Mortensen
quelle