You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何无需解析evtx文件获取指定时间后事件日志的完整扩展描述?

解决方案

你需要的事件日志扩展描述无需解析.evtx文件即可获取,Get-WinEvent -ListLog返回的EventLogConfiguration对象本身就内置了Description属性,直接读取即可,该属性存储了系统注册的对应事件日志的完整官方说明文本。

如果需要进一步获取该日志关联的事件发布者的元数据说明,也可以搭配Get-WinEvent -ListProvider命令读取,全程不需要访问evtx原始文件内容。

修改后的代码如下:

$StartTime = (Get-Date).AddMinutes(-5)

$rawdata = Get-WinEvent -ListLog *

$eventlogs = @{}

foreach ($record in $rawdata) {
    if ($record.LastWriteTime -gt $StartTime) {
        # 读取日志自带的扩展描述
        $logExtensionDesc = $record.Description
        # 可选:读取关联事件提供者的描述信息
        $providerExtensionDesc = $null
        if (-not [string]::IsNullOrWhiteSpace($record.OwningProviderName)) {
            $providerMeta = Get-WinEvent -ListProvider $record.OwningProviderName -ErrorAction SilentlyContinue
            $providerExtensionDesc = $providerMeta?.Description
        }
        $eventlogs[$record.GetHashCode()] = @{
            'LogType' = $record.LogType
            'Name' = $record.LogName
            'Provider' = $record.OwningProviderName
            'LogExtensionDescription' = $logExtensionDesc
            'ProviderExtensionDescription' = $providerExtensionDesc
            'Path' = $record.LogFilePath
            'Mode' = $record.LogMode
            'Time' = $record.LastWriteTime
        }
    }
}

补充说明

  • LogExtensionDescription字段就是你需要的事件日志完整扩展描述,数据从系统事件日志配置库直接读取,没有读取evtx文件的事件内容
  • 如果你需要更细粒度的事件ID对应的模板说明,可遍历$providerMeta.Events属性获取每个事件ID的预置描述,同样不需要解析evtx文件
  • 部分第三方或者系统内置日志没有注册扩展描述,对应字段返回空属于正常情况

内容的提问来源于stack exchange,提问作者Dario Corrada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 04:06:04