将整个 Windows 日志导出为 XML

将整个 Windows 日志导出为 XML

我想创建一个打印机统计信息,我有一个简单但功能强大的 XML 解析器。所以我想将打印机日志中的所有事件导出为 XML 格式。

打印服务器运行 Win2008R2。当我想将过滤后的日志导出到 XML(我已过滤事件 ID 307)时,我从近 6000 个事件中只得到了 300 个事件。

你能帮助我吗?我也尝试过使用 powershell 导出日志,但无法获取 xml 结构。

答案1

Windows 实用程序韦夫图利可以满足您的需求。我曾用它将某些事件日志条目存档到数据库中。基于 powershell 的方法有几种故障模式,使得迭代大量事件变得不可行。此实用程序一次性转储整个内容,这使得离线解析速度大大加快。

wevtutil qe Security /r:DC01 /q:"*[System[((EventID=307))]]" > evtdump.xml

具体来说,powershell 方法以零售方式提取事件。当它在循环中迭代时,它会要求目标机器“给我下一个事件”,这需要机器进行大量的来回操作。wevutil 方法和 powershell 方法之间的速度差异很大:通过 powershell 提取事件日志需要一个多小时,但通过 wevtutil 只需 2 分钟。

不过这取决于您的用例。如果您解析的日志不繁忙或不是很大,则 powershell 方法意味着您不必将文件作为脚本的一部分进行管理。

答案2

这应该可以解决问题:

Get-WinEvent | ?{$_.id -eq 307} | Export-Clixml 307Events.xml  

相关内容