使用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
,则转发的事件将显示在结果中。 这很奇怪。