get-winevent 输出到以二进制形式存储的文件

get-winevent output to a file getting stored as binary

我正在使用 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-csvget-winevent 创建了完整的文本文件,但这会生成一个非常难看的格式 csv 文件)。我真的很喜欢 convertTo-json 格式化和评估 json 数据的方式,并且会更喜欢它。 (如果有人可以提供一种不同的方式将 evtx 数据以其最完整的形式转换为 json,很高兴接受)。
我试过 evtx2csv python 模块,但它不会将输出写入文件。

首先,如果您打算导出 JSON,请不要使用 Format-List。这仅用于将对象格式化为控制台中的漂亮视觉表示。

此外,我不使用 Linux,但我想最安全的做法是明确指定 utf8 作为编码以确保其兼容:

Get-WinEvent -Path .\log.evtx | ConvertTo-Json | Out-File log.json -Encoding utf8