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

1 ответ1

0

2 варианта, первый проще, но не экспортируется в CSV.

Опция 1

В меню «Пуск» нажмите «Выполнить», введите cmd и нажмите клавишу ввода на клавиатуре.

В окне командной строки введите

systeminfo | найти "Up Time"

Обратите внимание, код выше чувствителен к регистру.

Вариант 2

Кроме того, следующий скрипт powershell делает это.

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

Источник

РЕДАКТИРОВАТЬ

Теперь, после перечитывания вашего вопроса, я думаю, что ответом будет использование Event Log XP, так как многие люди говорят, что он настраиваемый (но я не использовал его раньше).

О программном обеспечении:Event Log Explorer помогает вам быстро просматривать, находить и сообщать о проблемах, предупреждениях безопасности и всех других событиях, генерируемых в Windows.Благодаря Event Log Explorer мониторинг и анализ событий, записанных в журналах «Безопасность», «Система», «Приложение», «Служба каталогов», «DNS» и другие журналы операционных систем Microsoft Windows, становится намного быстрее и эффективнее.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .