我正在创建Windows事件日志清除软件。
每当您从命令行清除日志时,总会有一些日志无法清除,因为较新版本的Windows不再使用这些日志原本打算使用的服务,或者它们是重要的系统几乎总是被写入的日志。
但是,当Windows事件实用工具发现无法清除这些日志时,它将向用户发送错误消息。而且由于我正在尝试将该批处理文件制作成实际的软件,因此,为了用户体验,我宁愿屏幕上不会出现一堆混乱的错误消息。
此问题的明显答案是让批处理文件启动一个单独的后台批处理脚本来清除日志,用户看不到任何错误消息,但现代的防病毒软件确实不喜欢批处理脚本,几乎每次都对其进行标记,所以我不能这样做。
我尝试创建一个Powershell脚本(更受反病毒软件信任)来清除日志。但是,由于Powershell的性质,即使它完全在后台运行而没有控制台,它仍会以VBS XMessages的形式中继错误消息。
如果有用,这是powershell脚本中的两行代码:
wevtutil el | Foreach-Object {wevtutil cl "$_"}
exit
对于那些想知道的人,是的,我正在清除具有管理特权的日志。
我需要以下之一:
清除Windows事件日志的另一种方式,它不显示错误消息,我可以将其集成到正在创建的软件中。
一种强制清除通常无法清除的Windows事件日志的方法。
一种无需运行防病毒软件即可运行批处理脚本的方法。
一种使powershell脚本完全在后台运行的方法,而不会在事件中显示错误消息。
答案 0 :(得分:0)
对于偶然碰到这个问题的任何人,答案都在评论部分,这归功于@vonPryz,他提到Clear–EventLog
会比wevtutil
更好,而且确实如此。