首页 > 解决方案 > Powershell 使用 Where-Object 过滤 EventID

问题描述

我正在尝试从 Get-Event 日志中过滤掉一些 EventID,如下所示:

...More code here
Get-EventLog -LogName $_ -EntryType Warning,Error | 
Where-Object {$_.EventID -ne '0|1|2|3|4|7|8|9|10|14|15|17...'}

但是我在比较器上遇到了麻烦,使用 -ne 根本不会过滤掉任何东西,如果我使用 -notmatch,它只会返回一个结果,我已经确认有很多它正在跳过。不知道我错过了什么以及为什么它 -ne 根本不起作用,感谢您的帮助!非常感谢提前!

标签: powershellcomparatorget-eventlog

解决方案


您当前的代码:

$_.EventID -ne '0|1|2|3|4|7|8|9|10|14|15|17...'

当前正在检查 ID 是否为字面意思0|1|2|3|4|7|8|9|10|14|15|17...

要检查 ID 是否是指定的值之一,您需要使用-in运算符,如评论中所建议的:

$_.EventID -in @(0, 1, 2, 3)

为了将来参考,请查看about_Comparison_OperatorsPowerShell 文档。


推荐阅读