我希望将大量保存的安全日志文件 (.evtx) 导出为文本或 CSV 格式。我找到了 wevtutil 但在处理保存的日志文件时似乎只能将 .evt 转换为 .evtx:
wevtutil epl c:\logs\seclog.evtx c:\logs\seclog.txt /lf:true
该文件创建为 seclog.txt,但它是 .evtx 格式。
是否可以转换为文本,或者是否有其他方法可以尽快将文件转换为文本?我尝试使用 Powershell,但需要的时间太长。
编辑:我查看了 Log Parser,它似乎也很快,但它没有正确导出描述字段:
The description for Event ID xxx in Source "Microsoft-Windows-xxxx" cannot be found. The local computer may not have the...
最后,我使用 Log Parser 转换为 CSV,然后 [System.IO.File]::ReadLines($filename) 搜索文本。一个 800MB 的 .evtx 文件可以在大约 2 分 30 秒内转换,然后读取该文件大约需要 2 分钟。可能它可以更快地导出到 XML 或数据库中,但它对我来说会花费我必须花费的时间。
据我记得,LogParser 无法提取所有事件信息(我的意思是系统和 EventData,您可以在 EventViewer 中的每个事件的 xml 视图中看到)。因此,我选择了 powershell。我的脚本运行良好,但速度很慢:转换 10 Mb .evtx 文件大约需要 80 秒...
我需要将一堆 .evtx 批量转换为 .txt 文件 - 我最终让 Log Parser 转换为 .csv(然后我可以将其重命名为 .txt),但最简单的方法(并且只使用本机 Windows 工具)是使用
wevtutil
.wevtutil /qe File.evtx /lf: true
将在 cmd 中打开并显示 .evtx 文件。您所要做的就是让它以 .txt 格式输出该输出!wevtutil /qe File.evtx /lf: true > File.txt
我制作了一个批处理脚本,它将递归地检查一个文件夹中所有日期良好的事件文件,并将每个 .evtx 文件转换为该文件夹内的 .txt:
编辑 - 我确实意识到查询输出
wevtutil
不是很好读。将 Log Parser 与我的脚本一起使用,我能够获得更好的输出并仍然使用 .txt 保存如果您正在寻找一种点击式的方式来转换 EVTX 文件,您可以尝试 Gigasheet。这是一个基于 Web 的应用程序,可以解析 EVTX,您可以以 CSV 格式导出数据。您最多可以同时上传 99 个文件,并且可以免费上传最大 10GB 的文件。
此处的完整详细信息: https ://www.gigasheet.co/post/online-evtx-parser-and-viewer
我们在 Gigasheet 中的解析基于 @omerbenamram 的 Rust EVTX 解析器。查看 Github 上的基准测试,看起来性能对于大多数应用程序来说都应该不错:https ://github.com/omerbenamram/evtx
全面披露:我是 Gigasheet 的联合创始人。