我想创建一个打印机统计信息,我有一个简单但功能强大的 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