Tägliche "Computer ein" -Zeit aus Windows-Protokolldateien

723
Kev

Ich würde gerne wissen, wie lange unser Computer für einen bestimmten Kalendertag eingeschaltet ist, dh nicht im Standby-Modus. Gibt es ein (kostenloses) Programm, das diese Informationen aus dem Windows-Systemereignisprotokoll zum Beispiel in das CSV-Format extrahiert, das unter Windows XP funktioniert?

0
Ähnlich wie http://superuser.com/questions/28567/at-what-time-did-my-windows-xp-machine-come-out-of-of-hemmation, jedoch eher für den Standby-Modus als für den Ruhezustand Kev vor 11 Jahren 0

1 Antwort auf die Frage

0
Dave

2 Optionen, die erste ist einfacher, wird jedoch nicht in CSV exportiert.

Option 1

Klicken Sie im Startmenü auf Ausführen, geben Sie cmd ein und drücken Sie die Eingabetaste auf Ihrer Tastatur.

Geben Sie im Eingabeaufforderungsfenster ein

systeminfo | finde "Up Time"

Bitte beachten Sie, dass der obige Code die Groß- und Kleinschreibung berücksichtigt.

Option 2

Das folgende Powershell-Skript erledigt das auch.

<# .SYNOPSIS Collects uptime information and exports to csv-file. .DESCRIPTION Collects information about uptime and last reboot date from one or more computers and exports result to a csv-file located in logged on users "Documents" special folder. If this file already exists (the command has been run earlier the same day) it will append the new information to the same file. .PARAMETER ComputerName Gets information from specified computers. Type the name of one or more computers in a comma-separated list. Default is localhost. .PARAMETER Credential Specifies credentials that has permission to perform WMI-queries on remote machines. Use the object returned by the Get-Credential cmdlet as argument. For local access impersonation level 3 is always used (see Get-WMIObject). Default is current user. .LINK 2012 Scripting Games: https://2012sg.poshcode.org .NOTES Author : Jesper Strandberg Date : 2012-04-15 #> function Export-Uptime { [CmdletBinding()] param ( [parameter(ValueFromPipeline = $true)] [string[]]$ComputerName = $Env:COMPUTERNAME,  [Management.Automation.PSCredential] $Credential )  begin { $LocalMachineAliases = $Env:COMPUTERNAME,'localhost','127.0.0.1','::1','.' $Result = @() }  process { foreach ($Computer in $ComputerName) { Write-Verbose "Building parameters for $Computer" $WmiParam = @{ Class = "Win32_OperatingSystem"; Property = "LastBootUpTime"; ComputerName = $Computer }  if (-not ($LocalMachineAliases -contains $Computer) -and $Credential) { Write-Verbose "Adding credentials for $Computer" $WmiParam.Add("Credential", $Credential) }  Write-Verbose "Accessing $Computer" try { $OS = Get-WmiObject @WmiParam -ErrorAction Stop } catch { Write-Warning $_; continue }  Write-Verbose "Calculating uptime" $BootUpTime = $OS.ConvertToDateTime($OS.LastBootUpTime) $Uptime = New-TimeSpan -Start $BootUpTime -End "8 am" if ($Uptime -lt 0) { $Uptime = New-TimeSpan }  Write-Verbose "Building custom object" $Properties = @{ ComputerName = $Computer; Days = $Uptime.Days; Hours = $Uptime.Hours; Minutes = $Uptime.Minutes; Seconds = $Uptime.Seconds; Date = (Get-Date -Format d -Date $BootUpTime) } $Result += New-Object PSCustomObject -Property $Properties } # foreach } # process  end { Write-Verbose "Exporting results to CSV" $CSV = $Result | Select-Object -Property ComputerName,Days,Hours,Minutes,Seconds,Date | ConvertTo-Csv -NoTypeInformation -Delimiter ';'  $OutFile = "$([System.Environment]::GetFolderPath('Personal'))\$(Get-Date -UFormat %Y%m%d)_Uptime.csv" try { if (-not (Test-Path $OutFile)) { Write-Verbose "Creating $OutFile" $CSV | Out-File $OutFile -Encoding ASCII -ErrorAction Stop } else { Write-Verbose "Appending to $OutFile" $CSV | Select-Object -Skip 1 | Out-File $OutFile -Encoding ASCII -Append -ErrorAction Stop } } # try catch { Write-Warning $_ } } # end } # function 

Quelle

BEARBEITEN

Nun, nachdem ich Ihre Frage noch einmal gelesen habe, denke ich, dass die Antwort darin liegt, Event Log XP zu verwenden, da viele Leute sagen, es sei anpassbar (aber ich habe es noch nicht verwendet).

Informationen zur Software: Mit Event Log Explorer können Sie Probleme, Sicherheitswarnungen und alle anderen Ereignisse, die in Windows generiert werden, schnell durchsuchen, finden und Berichte darüber erstellen. Dank Event Log Explorer wird die Überwachung und Analyse von Ereignissen, die in den Bereichen Sicherheit, System, Anwendung, Verzeichnisdienst, DNS und andere Protokolle von Microsoft Windows-Betriebssystemen aufgezeichnet wurden, wesentlich schneller und effektiver.

Option 1 (außer bei einer nicht-englischen Version von Windows;)) zeigt nur die Gesamtbetriebszeit seit dem letzten Neustart (z. B. 4 Tage ...) an, nicht wie viel Betriebszeit an einem bestimmten Datum war (z. B. am Dienstag war mein Laptop vorhanden) ein und nicht für 3 Stunden im Standby-Modus). Kev vor 11 Jahren 0
Es tut mir leid Kev, ich habe deine Frage nicht verstanden. Lass mich wieder nach dir suchen. Dave vor 11 Jahren 0
Keine Bange. Ich habe PowerShell installiert und probiere Option 2 in einer Minute aus. Der Link in Ihrem Kommentar bezieht sich jedoch auf Win7 und nicht auf XP. Kev vor 11 Jahren 0
Okay, die Sache mit all diesen ist, dass Sie Shutdown-Ereignisse verfolgen, aber Standby muss berücksichtigt werden ... Kev vor 11 Jahren 0
Auch dieses PowerShell-Skript gibt mir Fehler in Bezug auf fehlende Klammern und solche, die nicht wahr zu sein scheinen, aber ich weiß nichts über PowerShell. Kev vor 11 Jahren 0
Nun, mein letzter Vorschlag ist, http://www.eventlogxp.com/ zu überprüfen, da viele Leute sagen, dass sie anpassbar ist, aber ich habe sie noch nicht verwendet. Dave vor 11 Jahren 1
Vielleicht könnten Sie damit eine neue Antwort geben und auch, wie Sie die korrekte Überwachungsrichtlinie aktivieren können, um Standby-Ereignisse zu protokollieren, sodass ich + 1 / das akzeptieren kann. Vielen Dank! Kev vor 11 Jahren 0
Ich weiß immer noch nicht, wie ich ihn zum Protokollieren bringen kann ... Wenn ich mir das anschaue, ist es langsam, weil das Windows-Fenster dieses Computers auf Deutsch ist und ich kein Deutsch verstehe. Ich muss die richtige Richtlinie kennen, die verwendet werden muss, damit die Ereignisse überhaupt in der Ereignisanzeige angezeigt werden. Ich habe versucht, die Systemprotokollierung mithilfe von secpol.msc zu aktivieren, aber es scheint keine Standby-Instanz zu erkennen. Kev vor 11 Jahren 0
Vielleicht brauche ich eine separate Frage .... Kev vor 11 Jahren 0
Ja, eine neue Frage wäre hier am besten Dave vor 11 Jahren 0