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

PowerShell中Get-WinEvent特定错误的捕获与优雅处理方案咨询

解决Get-WinEvent因%%长数字事件消息触发的解析错误

问题分析

当系统事件日志中存在包含%%+超长数字的消息时,PowerShell访问事件对象的Message属性会触发异常:get-winevent : The description string for parameter reference (%1) could not be found。这是因为Windows的事件消息解析逻辑会将%%数字视为参数引用ID,当数字超出预定义的参数范围时,无法找到对应的描述字符串,进而抛出错误导致整个脚本中断。

解决方案

通过逐个处理事件并捕获解析异常的方式,跳过错误事件或标记错误信息,确保脚本持续执行。核心思路是用try/catch块包裹Message属性的访问操作,遇到异常时返回友好提示,而非中断整个流程。

完整脚本示例

# 定义目标计算机名称
$CompName = "目标计算机名"

# 获取近30天内的系统关键事件(暂不解析Message)
$criticalEvents = Get-WinEvent -LogName System -ComputerName $CompName -ErrorAction Stop | 
    Where-Object { 
        $_.LevelDisplayName -eq 'Critical' -and 
        $_.TimeCreated -ge (Get-Date).AddDays(-30) 
    }

# 逐个处理事件,捕获Message解析异常
$processedEvents = $criticalEvents | ForEach-Object {
    $currentEvent = $_
    try {
        # 尝试解析事件消息
        $eventMessage = $currentEvent.Message
        [PSCustomObject]@{
            TimeCreated = $currentEvent.TimeCreated
            State       = $currentEvent.LevelDisplayName
            Message     = $eventMessage
        }
    }
    catch [System.InvalidOperationException] {
        # 捕获特定的参数引用解析错误
        [PSCustomObject]@{
            TimeCreated = $currentEvent.TimeCreated
            State       = $currentEvent.LevelDisplayName
            Message     = "[无法解析事件消息: 参数引用描述未找到]"
        }
    }
    catch {
        # 处理其他未知错误
        [PSCustomObject]@{
            TimeCreated = $currentEvent.TimeCreated
            State       = $currentEvent.LevelDisplayName
            Message     = "[解析错误: $($_.Exception.Message)]"
        }
    }
}

# 格式化输出结果
$processedEvents | Format-Table -AutoSize -Wrap

关键说明

  1. 分离事件获取与消息解析:先通过Get-WinEvent和Where-Object过滤出目标事件,避免在管道中直接访问Message导致中途中断。
  2. 精准捕获异常:针对InvalidOperationException(对应参数引用未找到的错误)单独处理,同时保留通用异常捕获逻辑覆盖其他情况。
  3. 保留结果完整性:出错事件不会被丢弃,而是标记错误信息后继续参与输出,不会影响其他正常事件的展示。

内容的提问来源于stack exchange,提问作者Scy Watcher

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 07:19:53