Назад | Перейти на главную страницу

Использование WMI для запроса журналов сборщика событий Windows

Использовать WMI для запроса журнала событий довольно просто, используя Win32_NTLogEvent, например:

Get-WmiObject -query "SELECT *FROM Win32_NTLogEvent WHERE (logfile='Application' and SourceName='Something')

Однако, если я хочу запросить журнал, содержащий события, собранные с помощью сборщика событий Windows, они не будут отображаться в результатах, даже если события из других источников в том же журнале.

Я могу использовать командлет Get-Eventlog для получения событий WEC, но это не решает мою проблему.

Что я пытаюсь сделать, так это использовать __InstanceCreationEvent и что-то делать (перенаправить в экземпляр kafka), когда новое событие вставляется в журнал. Видеть пример из Scripting Guy и Модуль ввода журнала событий Logstash например использование.

$query = "Select * from __InstanceCreationEvent Where TargetInstance ISA 'Win32_NTLogEvent' And (TargetInstance.LogFile = 'HardwareEvents')"
$Eventwatcher = New-Object management.managementEventWatcher $Query
$Event = $Eventwatcher.waitForNextEvent()

Это отлично работает для обычных журналов, но не для пересылаемых событий из сборщика событий Windows.

Какие-либо предложения?

В вашей подписке на события, если вы установите для «Журнала назначения» значение «Система», И если вы НЕ укажете logfile в твоем WHERE условие, то перенаправленные события будут отображаться в результатах. Это совершенно странно.