You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Windows事件查看器中用XPath 1.0筛选含子串的内容

Windows事件查看器(WEV)XPath查询问题求助

问题背景

Windows事件查看器(WEV)支持使用XPath 1.0子集进行自定义查询1。我花了数小时尝试编写可用的查询却始终失败,不确定是WEV支持的XPath子集不兼容contains()函数,还是我作为XPath新手的写法有误。

我想要实现的是:筛选所有包含EventData元素,且该元素下的Data元素文本内容包含子串“foo”的节点。尝试过的查询语句如下:

  • *[EventData[Data[contains(text(),"foo")]]]
  • *[Event[contains(Data, "foo")]]

另外,*[EventData[Data]]这个查询是有效的,它能筛选出所有包含EventData且其下存在Data元素的节点,我需要把这30622条结果缩小到已知包含“foo”的7条。

复现步骤与测试情况

针对疑问,以下是具体复现步骤和测试结果:

  1. 打开Windows事件查看器:执行命令 %windir%\system32\eventvwr.msc /s
  2. 打开系统日志
  3. 点击右侧「创建自定义视图...」,切换到「XML」选项卡,勾选「手动编辑查询」
  4. 将查询修改为:
<QueryList>
  <Query Id="0" Path="System">
    <Select Path="System">*[EventData[Data[@Name="updateTitle"]]]</Select>
  </Query>
</QueryList>
  1. 点击两次「确定」,可成功选中数百至数千条系统更新相关事件
  2. 编辑筛选器,将Select元素修改为:
<Select Path="System">*[EventData[contains(Data, "Intelligence Update")]]</Select>

点击两次「确定」后会弹出错误提示,且没有选中任何事件。

WEV XPath限制的困惑

我找到了记录WEV的XPath 1.0限制的文档2,但文档表述模糊:

  • 一方面提到“只要位置路径符合以下限制,任何有效的XPath表达式都是可接受的”,限制条款中未提及不支持XPath 1.0函数,还明确标注支持position、band和timediff三个函数;
  • 另一方面,WEV显然不接受标准的XPath 1.0查询(比如*[EventData[Data[contains(., "Intelligence Update")]]]),这说明WEV可能仅支持文档中提到的三个函数,不支持其他XPath 1.0函数。

关于重复问题的说明

本问题被标记为重复,但和所有被提议的重复问题均无重叠。我的问题是针对Windows事件查看器的,它使用XPath 1.0语法实现筛选功能。未来使用WEV的用户可能会遇到同样的问题,如果本问题被关闭,他们可能因其他问题未提及WEV而找不到解决方案。

内容的提问来源于stack exchange,提问作者Mark Moore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 10:32:43