Использование WMI для запроса журналов Windows Event Collector

Использование WMI для запроса журналов Windows Event Collector

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

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

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

Я могу использовать командлет 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 Event Collector.

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

решение1

В вашей подписке на события, если вы установите "Destination Log" на "System", И если вы НЕ укажете logfileв вашем WHEREусловии, то пересылаемые события будут отображаться в результатах. Это совершенно странно.

Связанный контент