get-winevent 输出到以二进制形式存储的文件
Posted
技术标签:
【中文标题】get-winevent 输出到以二进制形式存储的文件【英文标题】:get-winevent output to a file getting stored as binary 【发布时间】:2021-07-03 06:42:46 【问题描述】:我正在使用 get-winevent 将 evtx 日志转换为 .json 文件。然后我把它寄给了ELK。 Get-WinEvent -Path .\log.evtx | ConvertTo-Json|Format-List | Out-File log.json
该文件看起来像一个包含 Windows 上的文件的普通字符串。但是当我把它带到linux时,它包含二进制数据,无法解析为ELK。
即使我使用 out-string,也没有任何变化。 $result = Get-WinEvent -Path .\user-creation-1log.evtx | ConvertTo-Json| Format-List
$result | Out-String | out-file log.json
这在 linux 中也看起来像一个二进制文件。 (虽然我记得export-csv
和get-winevent
创建了完整的文本文件,但这会产生一个非常难看的格式化csv 文件)。我真的很喜欢 convertTo-json 格式化和重视 json 数据的方式,并且更喜欢它。 (如果有人可以提供一种不同的方式将 evtx 数据以最完整的形式转换为 json,很高兴接受)。
我已经尝试过 evtx2csv python 模块,但它不会将输出写入文件。
【问题讨论】:
【参考方案1】:首先,如果您打算导出 JSON,请不要使用 Format-List
。这仅用于将对象格式化为控制台中的良好视觉表示。
另外,我不使用 Linux,但我想明确指定 utf8 作为编码以确保其兼容是最安全的:
Get-WinEvent -Path .\log.evtx | ConvertTo-Json | Out-File log.json -Encoding utf8
【讨论】:
完美解决,编码解决了。如果我再次遇到问题,我将测试将文件上传到 ELK 并再次更新。 @nav33n 这是在黑暗中拍摄的,但很高兴它对你有用。祝你好运。 另外,生成的 json 被分割成多行,由换行符分隔。有没有办法在一行中获取 JSON 日志? (多行 JSON 正在破坏 ELK 的解析)。生成的日志格式在此链接有问题***.com/questions/68238193/… @nav33n 您应该真正查看您正在使用的 cmdlet 的 documentation,或者使用Get-Help
。你会看到有一个-Compress
开关。以上是关于get-winevent 输出到以二进制形式存储的文件的主要内容,如果未能解决你的问题,请参考以下文章