使用WMI查询Windows事件收集器日志

使用WMI查询事件日志非常简单,例如使用Win32_NTLogEvent:

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

但是,如果我想查询包含使用Windows事件收集器收集的事件的日志,则不会显示在结果中,即使是来自同一日志中的其他来源的事件也是如此。

我可以使用cmdlet Get-Eventlog检索WEC事件,但这并不能解决我的问题。

我想要做的是使用__InstanceCreationEvent ,并在日志中插入新事件时执行某些操作(将其转发给kafka实例)。 请参阅脚本专家和Logstash Eventloginput模块的示例,以供使用。

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

这适用于正常日志,但不适用于从Windows事件收集器转发的事件。

有什么build议么?

在您的事件订阅中,如果您将“目标日志”设置为“系统”,并且您没有在WHERE条件中指定logfile ,则转发的事件将显示在结果中。 这很奇怪。