【问题标题】:get-winevent output to a file getting stored as binaryget-winevent 输出到以二进制形式存储的文件
【发布时间】: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-csvget-winevent 创建了完整的文本文件,但这会产生一个非常难看的格式化csv 文件)。我真的很喜欢 convertTo-json 格式化和重视 json 数据的方式,并且更喜欢它。 (如果有人可以提供一种不同的方式将 evtx 数据以最完整的形式转换为 json,很高兴接受)。
我已经尝试过 evtx2csv python 模块,但它不会将输出写入文件。

【问题讨论】:

    标签: powershell get-winevent


    【解决方案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 的解析)。生成的日志格式在此链接有问题stackoverflow.com/questions/68238193/…
    • @nav33n 您应该真正查看您正在使用的 cmdlet 的 documentation,或者使用 Get-Help。你会看到有一个-Compress 开关。
    猜你喜欢
    • 2012-01-07
    • 2022-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多