如何用PowerShell删除事件查看器关键错误并配置每周自动执行?
解决事件查看器关键错误日志删除问题
一、先明确Level参数的取值
Windows事件日志的Level参数对应以下数值和日志类型,是实际使用中验证有效的取值:
Level=1:Critical(关键错误,也就是你要删除的目标类型)Level=2:Error(普通错误)Level=3:Warning(警告)Level=4:Information(信息)Level=5:Verbose(详细日志)
你之前的脚本之所以删了所有日志,核心问题是wevtutil cl Application是直接清空整个应用日志的命令,前面的筛选查询输出对它没有任何影响,管道在这里起不到筛选删除的作用。
二、正确的删除脚本写法
因为wevtutil没有直接删除指定筛选条目的命令,我们需要通过「导出需保留的日志→清空原日志→导回保留日志」的逻辑实现。把下面内容保存为CleanCriticalErrors.bat批处理文件:
@echo off :: 先创建临时目录(如果不存在) if not exist "C:\Temp" mkdir "C:\Temp" :: 处理应用日志:导出非关键错误的日志,清空原日志后导回保留内容 wevtutil epl Application "C:\Temp\AppLogTemp.evtx" /q:"*[System[(Level!=1)]]" wevtutil cl Application wevtutil il "C:\Temp\AppLogTemp.evtx" :: 处理系统日志:复用同样逻辑 wevtutil epl System "C:\Temp\SysLogTemp.evtx" /q:"*[System[(Level!=1)]]" wevtutil cl System wevtutil il "C:\Temp\SysLogTemp.evtx" :: 清理临时文件 del "C:\Temp\AppLogTemp.evtx" "C:\Temp\SysLogTemp.evtx"
三、任务计划程序设置每周自动执行
- 打开「任务计划程序」,点击右侧「创建任务」
- 「常规」选项卡:勾选「使用最高权限运行」,选择「不管用户是否登录都要运行」(确保日志操作权限足够)
- 「触发器」选项卡:新建触发器,设置为「每周」,选择你需要的执行时间和重复频率
- 「操作」选项卡:新建操作,选择「启动程序」,程序或脚本填
cmd.exe,添加参数填/c "C:\你的脚本存放路径\CleanCriticalErrors.bat"(注意替换成实际脚本路径) - 「设置」选项卡:按需勾选「如果任务失败,每隔X分钟重试」等容错选项,最后确认保存即可
内容的提问来源于stack exchange,提问作者Baldovín Cadena Mejía
相关产品推荐
相关产品推荐

