使用正则表达式在事件查看器中过滤事件

时间:2015-09-30 16:37:18

标签: xpath event-viewer

我有一个包含数千个事件的事件日志。我想制作一个自定义过滤器或视图,其中显示了其中一些。我想在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的尝试时,如何访问编译/运行时错误?

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

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

1 个答案:

答案 0 :(得分:3)

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

Get-EventLog -logname 安全性 | where-object {$ _。类似于消息的' testsite '} format-table Message -wrap -autosize | Out-File C:\ Users **用户名** \ Desktop \ out.txt

您需要指定自己的日志名称,要搜索的文本和outfile路径。

“format-table Message -wrap -autosize”确保您的消息/异常不会被截断。如果要查找除Message之外的其他字段,请将“$ _.Message”替换为相应的字段名称。

干杯