Powershell – системные журналы и особенности фильтров по времени


Какое время и в каком формате использовать, если вы хотите получить события из системного журнала за определенное время? Есть небольшой сюрприз…

Если воспользоваться оснасткой Event Viewer, то в ней есть возможность установить фильтр, в том числе можно задать диапазон времени – время локальное для текущей сессии:

clip_image001

В результате имеем такой фильтр:

clip_image002

Если открыть представление этого фильтра в формате XML, то мы увидим:

clip_image003

 

Как вы видите, время перекодировано и задано в определенном формате (SortableDateTimePattern) и, более того, это время приведено к UTC!

Мы можем скопировать этот запрос и использовать его в командлете GetWinEvent  с параметром FilterXML – в результате получим массив с теми же событиями, что и в оснастке Event Viewer.

Теперь становится очевидным, что если вы хотите динамически построить фильтр содержащий время, то необходимо привести время к UTC и отформатировать надлежащим образом.

Вот пример такого форматирования:

$Today = [System.DateTime]::Today.ToUniversalTime().ToString(«s»)

$Yesterday = [System.DateTime]::Today.AddDays(-1).ToUniversalTime().ToString(«s»)

Теперь эти переменные можно использовать для построения фильтра:

$query = @”

<QueryList>

  <Query Id=»0″ Path=»Microsoft-Windows-PrintService/Operational»>

    <Select Path=»Microsoft-Windows-PrintService/Operational»>*[System[TimeCreated[@SystemTime>=$Yesterday and @SystemTime<=$Today]]]</Select>

  </Query>

</QueryList>

 

“@

Вызов командлета:

Get-WinEvent –FilterXML $query

комментария 4

  1. […] Powershell – системные журналы и особенности фильтров по… […]

  2. […] Powershell – системные журналы и особенности фильтров по… […]

  3. […] Powershell – системные журналы и особенности фильтров по… […]

  4. […] Powershell – системные журналы и особенности фильтров по… […]

Ответить на Централизованный аудит печати — Экспорт событий аудита в файл | ILYA Sazonov: ITPro Отменить ответ