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

PowerShell函数调用时传入$_.Exception始终为$null的原因

问题根因

这是PowerShell语法混淆导致的典型传参错误:

  • 括号包裹参数、逗号分隔多参数的写法,仅适用于调用.NET对象的方法,完全不适用于PowerShell自定义函数、内置cmdlet的调用场景。
  • 你写的LogError("…", $_.Exception),PowerShell会将括号内的("…", $_.Exception)整体识别为一个二元数组,把整个数组赋值给第一个位置形参$message;第二个形参$exception没有收到任何传入值,因此始终保持定义时的默认值$null。

可以在LogError函数内加一行测试代码验证该逻辑:

Write-Host "`$message 类型:$($message.GetType().FullName),元素数量:$($message.Count)"

运行后就能看到$message实际是数组类型,你要传递的Exception对象就存在该数组的第二个索引位。

正确调用写法

去掉包裹参数的括号,多个参数之间用空格分隔即可,两种常用写法:

  • 按位置顺序传参(写法简洁)
    catch { LogError "自定义错误消息" $_.Exception }
    
  • 显式指定参数名传参(可读性强,不会因参数顺序写错引发问题)
    catch { LogError -Message "自定义错误消息" -Exception $_.Exception }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:45:49