【问题标题】:Filtering events in Event Viewer using a regex使用正则表达式过滤事件查看器中的事件
【发布时间】:2026-02-05 14:20:03
【问题描述】:

我有一个包含数千个事件的事件日志。我想制作一个显示其中一些的自定义过滤器或视图。我想在 XML 的整个文本(作为文本)或特定字段上使用正则表达式(甚至只是简单的文本匹配)来过滤它们。事件查看器确实支持 ctl+f 查找,但显然您不能将相同的查找操作放入自定义视图中,以便每次都可以使用它。

  • 环境:Microsoft windows server 2012 标准
  • 程序:事件查看器

我查看了创建自定义视图,并且正在编辑自定义视图属性的 XML 源以尝试过滤它们。

事件如下所示:

<Event xmlns="http://blahblah.com">
  <EventData>
    <Data>Blah smith blah
    </Data>
  </EventData>
</Event>

我想在数据字段上进行文本匹配/正则表达式。

我已经尝试了很多这样的事情:

<QueryList>
  <Query Id="0" Path="">
    <Select Path="">
       *[EventData[Data=regex("*smith*")]]
    </Select>
  </Query>
</QueryList>

以及其他类似的行

*[EventData[Data="%smith%")]]
*[EventData[Data="%%smith%%")]]

但我没有得到任何结果或无效的 XPath 错误。

我该怎么做?我也有兴趣知道我在哪里的名字。这是完整的 XPath,还是有一些特定的 Microsoft 版本名称?我什至如何从*Event 行中获取存在的命名空间列表?对于解释我尝试编写 XPath 的任何内容,我如何才能访问编译/运行时错误?

我也接受连接到事件查看器 API 的程序形式的解决方案。如果它们易于使用并且可以与程序本身集成,那就更好了,但即使是事件日志过滤的 powershell 版本也会很有用。

总的来说,我只想根据内容的正则表达式(或只是简单的文本匹配)从事件日志中过滤掉一些事件。从理论上讲,这应该很容易做到 - ctl+f find 可以做到,事件存储在我的本地计算机上的某个地方,并且我有一个明显复杂的自定义视图过滤器设置。

【问题讨论】:

标签: xpath event-viewer


【解决方案1】:

使用 powershell,有一个简单的解决方法:

Get-EventLog -logname 安全性 | where-object { $_.Message -like 'testsite' } |格式表消息 -wrap -autosize |输出文件 C:\Users**username**\Desktop\out.txt

您需要指定自己的日志名称、要搜索的文本和输出文件路径。

“format-table Message -wrap -autosize”确保您的消息/异常不会被截断。如果您想通过 Message 以外的其他字段查找,请将“$_.Message”替换为适当的字段名称。

干杯

【讨论】:

    最近更新 更多