Windows 事件日志,您可以对不相等的字符串进行 xpath 过滤吗?

Luc*_*VdV 5 xpath filter event-viewer

有没有办法过滤特定属性不是 Windows (Server 2016) 事件查看器的 XPath 有限方言中的给定字符串的事件?

我正在尝试查看登录事件,但仅查看实际用户登录(控制台和 RDP)。

这被接受为过滤器,但给出了太多的结果,好像最后的 AND 项被忽略了:

<QueryList> <Query Id="0" Path="Security"> <Select Path="Security">
    *[System[(EventID=4624)]]
and *[EventData[Data[@Name='LogonType'] and (Data=1 or Data=8 or Data=9)]]
and *[EventData[Data[@Name='TargetUserName'] and (Data!='SYSTEM')]]
</Select> </Query> </QueryList>
Run Code Online (Sandbox Code Playgroud)

当我将第三个测试更改为此时,它被标记为“无效查询”。

and not *[EventData[Data[@Name='TargetUserName'] and (Data='SYSTEM')]]
Run Code Online (Sandbox Code Playgroud)

然而,我找到了另一个 XPath 问题的答案,该问题建议更喜欢这种形式,因为当比较的一侧是一个集合而不是一个值时,!= 给出了错误的结果。

与此相同,无效查询

and *[EventData[Data[@Name='TargetUserName'] and not (Data='SYSTEM')]]
Run Code Online (Sandbox Code Playgroud)

或这个

and *[EventData[Data[@Name='TargetUserName'] and !(Data='SYSTEM')]]
Run Code Online (Sandbox Code Playgroud)

小智 7

您的查询应如下所示:

<QueryList> 
    <Query Id="0" Path="Security">
        <Select Path="Security">
            *[System[(EventID=4624)]]
            and *[EventData[Data[@Name='LogonType'] and (Data=1 or Data=8 or Data=9)]]
        </Select>
        <Suppress Path="Security">
            *[EventData[Data[@Name='TargetUserName'] and (Data='SYSTEM')]]
        </Suppress>
    </Query>
</QueryList>
Run Code Online (Sandbox Code Playgroud)

压制是秘诀