Получение данных о перезагрузке системы при помощи PowerShell

Информацию о перезагрузках системы можно получить проанализировав событие с ID 1074 журнале System, при помощи командлета Get-EventLog:

Get-EventLog -LogName System -ComputerName server1 |
where {$_.EventId -eq 1074} |
ForEach-Object {
 
    $rv = New-Object PSObject | Select-Object Date, User, Action, process, Reason, ReasonCode, Comment, Message
    if ($_.ReplacementStrings[4]) {
        $rv.Date = $_.TimeGenerated
        $rv.User = $_.ReplacementStrings[6]
        $rv.Process = $_.ReplacementStrings[0]
        $rv.Action = $_.ReplacementStrings[4]
        $rv.Reason = $_.ReplacementStrings[2]
        $rv.ReasonCode = $_.ReplacementStrings[3]
        $rv.Comment = $_.ReplacementStrings[5]
        $rv.Message = $_.Message
        $rv
    }
} | Select-Object Date, Action, Reason, User

Чтобы не извлекать всю релевантную информацию использован ReplacementStrings, содержащий массив данных. Сообщение будет получено только при наличии записи в 5 элементе массива ReplacementStrings[4] (сообщение о перезагрузке и выключение).
Заменив имя системы в -ComputerName server1 таким образом можно собрать данные с любого удаленного сервера к которому имеется доступ.

Теги:

Понравилась статья? Оставьте комментарий или подпишитесь на RSS рассылку.

Комментарии

Класс, спасибо

Оставить комментарий

(required)

(required)