开发脚本查询特定Windows事件并显示匹配事件总数
实现Windows事件查询并显示总数的PowerShell脚本方案
嘿,我懂你想要的效果——用PowerShell脚本筛选特定Windows事件,运行结束后清晰展示找到的事件总数对吧?这里给你两种实用的实现方式,都能轻松达成需求:
方法一:存储结果到变量后统计(推荐)
这种方式既方便后续对事件做其他处理,又能直观获取总数,还能避免无匹配事件时的报错:
# 将查询到的事件存储到变量中 $targetEvents = Get-WinEvent -FilterHashtable @{ LogName='Application' Level=4 StartTime=(Get-Date).AddHours(-24) } -ErrorAction SilentlyContinue # 输出最终找到的事件总数 Write-Host "本次查询共找到 $($targetEvents.Count) 条符合条件的事件"
小细节说明:
- 加上
-ErrorAction SilentlyContinue是为了防止当没有匹配的事件时,脚本抛出“找不到任何事件”的错误,让脚本运行更平滑。 $targetEvents.Count会直接返回集合中的元素数量,如果没有找到事件,会显示0,逻辑更清晰。
方法二:管道直接统计(无需存储变量)
如果不需要保留事件数据,只想快速得到总数,可以用管道链直接完成统计:
Get-WinEvent -FilterHashtable @{ LogName='Application' Level=4 StartTime=(Get-Date).AddHours(-24) } -ErrorAction SilentlyContinue | Measure-Object | Select-Object -ExpandProperty Count | ForEach-Object { Write-Host "符合条件的事件总数: $_" }
逻辑解释:
Measure-Object会统计管道对象的数量,通过Select-Object -ExpandProperty Count提取出具体的数字,最后用ForEach-Object输出结果。
另外补充个小提示:你用的Level=4对应的是**信息(Information)**级别的事件,如果需要调整为其他级别,可以修改这个值:
- 1 = Critical(严重)
- 2 = Error(错误)
- 3 = Warning(警告)
- 4 = Information(信息)
- 5 = Verbose(详细)
内容的提问来源于stack exchange,提问作者Bryan Almeida
相关产品推荐
相关产品推荐

