Ежедневное время включения компьютера из файлов журнала Windows

660
Kev

Я хотел бы знать, как долго наш компьютер включен, то есть не находится в режиме ожидания, для любого данного календарного дня. Существует ли (бесплатная) программа, которая извлекает эту информацию из журнала событий системы Windows, скажем, в формате CSV, который работает в Windows XP?

0
Аналогично http://superuser.com/questions/28567/at-what-time-did-my-windows-xp-machine-come-out-of-hibernation, но для режима ожидания, а не гибернации Kev 11 лет назад 0

1 ответ на вопрос

0
Dave

2 choices, the first is easier but doesn't export to CSV.

Option 1

From the Start menu click on Run and type cmd and press enter on your keyboard.

From the Command Prompt window, type

systeminfo | find "Up Time"

Please note, the code above is case sensitive.

Option 2

Also, the following powershell script does it.

<# .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 

Source

EDIT

Now, after re-reading your question, I think the answer is to use event Log XP as lots of people say it's customizable (but I've not used it before).

About the software: Event Log Explorer helps you to quickly browse, find and report on problems, security warnings and all other events that are generated within Windows. Thanks to Event Log Explorer, monitoring and analysis of events recorded in Security, System, Application, Directory Service, DNS, and other logs of Microsoft Windows operating systems gets much faster and really effective.

Вариант 1 (кроме того, что он не работает в неанглийской версии Windows;)) показывает только общее время безотказной работы с момента последнего перезапуска (например, 4 дня ...), а не сколько времени безотказной работы было в определенную дату (например, во вторник мой ноутбук был и не в режиме ожидания в течение 3 часов). Kev 11 лет назад 0
Прости, Кев, я совершенно не поняла твой вопрос. Позволь мне снова поискать тебя. Dave 11 лет назад 0
Не волнуйтесь. Я установил PowerShell и попробую вариант 2 через минуту. Ссылка в вашем комментарии, хотя для Win7, а не XP. Kev 11 лет назад 0
Ладно, все это связано с тем, что вы отслеживаете события завершения работы, но необходимо учитывать режим ожидания ... Kev 11 лет назад 0
Кроме того, этот сценарий PowerShell дает мне ошибки об отсутствующих скобках и тому подобном, что не соответствует действительности, но я ничего не знаю о PowerShell. Kev 11 лет назад 0
Ну, мое последнее предложение - просмотреть http://www.eventlogxp.com/, так как многие люди говорят, что его можно настраивать, но я раньше этим не пользовался. Dave 11 лет назад 1
Может быть, вы могли бы дать новый ответ с этим, а также как включить правильную политику аудита для регистрации событий в режиме ожидания, чтобы я мог + 1 / принять это. Спасибо! Kev 11 лет назад 0
Я все еще не знаю, как заставить это войти, хотя ... изучая это, но это медленно, потому что Windows этого компьютера на немецком языке, и я не понимаю немецкий язык. Мне нужно знать правильную политику, которая будет использоваться для того, чтобы события отображались в средстве просмотра событий. Я попытался включить системное ведение журнала с помощью secpol.msc, но, похоже, он не ловит резервный экземпляр. Kev 11 лет назад 0
Может мне нужен отдельный вопрос .... Kev 11 лет назад 0
Да, новый вопрос будет лучше здесь Dave 11 лет назад 0