Windows Server 2016事件查看器XPath非等于过滤方法咨询
Windows Server 2016事件查看器受限XPath:不等于过滤与登录事件筛选指南
受限XPath里能不能实现“不等于”过滤?
Windows Server 2016事件查看器用的受限XPath方言确实不支持直接用!=运算符,但别担心,咱们可以用not()函数绕开这个限制来实现“不等于”的逻辑。比如要排除某个属性值等于特定字符串的事件,写法大概是not(Data[@Name='目标属性名']='要排除的字符串')。
解决你筛选实际用户登录事件的问题
你说原过滤语句返回结果过多,看起来最后一个AND条件被忽略,这大概率是因为XPath的语法结构写错了。要筛选EventID=4624且LogonType为2(本地控制台登录)或10(远程RDP登录)的事件,正确的查询语句应该是这样的:
<QueryList> <Query Id="0" Path="Security"> <Select Path="Security">*[System[EventID=4624]] and *[EventData[Data[@Name='LogonType'] and (Data='2' or Data='10')]]</Select> </Query> </QueryList>
原语句的问题出在哪?
从你给出的片段(Data=1 ...来看,首先可能是没写完,但更核心的问题是受限XPath对节点嵌套的要求很严格。如果你的条件没有正确嵌套在对应的节点下(比如LogonType的判断必须放在EventData节点的范围内),事件查看器就会解析失败,直接忽略掉无效的条件部分,自然就会返回一堆不符合要求的事件。
额外技巧:用not()排除特定登录类型
如果之后你需要排除某些类型的登录(比如排除服务账号登录的LogonType=5),就可以用上刚才说的not()函数,示例如下:
<QueryList> <Query Id="0" Path="Security"> <Select Path="Security">*[System[EventID=4624]] and *[EventData[Data[@Name='LogonType'] and not(Data='5')]]</Select> </Query> </QueryList>
内容的提问来源于stack exchange,提问作者Luc VdV
相关产品推荐
相关产品推荐

