如何修改PowerShell脚本仅导出Windows日志中严重、警告和错误事件
Windows事件日志分级导出修改指南
需求说明
你需要导出Windows事件日志中仅包含*严重(级别1)、错误(级别2)、警告(级别3)*的事件,目前已验证筛选命令可生效,需要找到现有全量导出脚本的修改位置完成逻辑调整。
你之前测试可用的筛选命令如下:
Get-WinEvent -FilterHashTable @{LogName = "System"; Level=1,2,3; StartTime=((Get-Date).AddDays(-7))} -ComputerName "server1" #| Out-GridView
修改位置说明
你的现有脚本使用wevtutil epl命令实现全量日志导出,无筛选逻辑,需要修改Foreach($log in $logArray)循环内的导出代码段,将级别筛选规则加入导出逻辑即可,不需要改动其他配置代码。
两种修改方案选其一即可:
方案1:直接修改原有wevtutil命令,新增筛选参数
不需要调整整体结构,直接把循环内的wevtutil epl $log $destination替换为以下命令即可,wevtutil会直接按级别筛选后导出为evtx文件:
# 筛选级别为1/2/3的事件后导出 wevtutil epl $log $destination /q:"*[System/Level<=3]"
方案2:替换为你已验证的Get-WinEvent逻辑
如果你习惯用PowerShell原生命令,可以把原有导出逻辑替换为以下代码,实现同样的筛选效果:
# 按级别筛选后导出为evtx文件 Get-WinEvent -FilterHashTable @{LogName = $log; Level=1,2,3; StartTime=((Get-Date).AddDays(-7))} | Export-WinEvent -Path $destination
修改后完整循环示例
Foreach($log in $logArray) { $destination = $destinationpath + $servername + "-" + $log + "-" + $logdate + ".evtx" Write-Host "Extracting the $log file now." # 替换为带筛选的导出命令即可,以下是方案1的示例 wevtutil epl $log $destination /q:"*[System/Level<=3]" }
内容的提问来源于stack exchange,提问作者Jeremy F.
相关产品推荐
相关产品推荐

