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

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

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

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

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

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

我想做的是,__InstanceCreationEvent当新事件插入日志时,使用并执行某些操作(将其转发到 kafka 实例)。请参阅来自 Scripting Guy 的示例Logstash Eventlog 输入模块例如用法。

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

这对于普通日志来说非常有效,但对于来自 Windows 事件收集器的转发事件则无效。

有什么建议么?

答案1

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

相关内容