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

PowerShell 5.1如何从$Error嵌套对象提取PSComputerName与错误信息?

解决PowerShell 5.1中提取ErrorVariable嵌套属性的问题

要直接提取ErrVar中的PSComputerName和错误消息,你可以通过计算属性在Select-Object中访问嵌套属性,或者用ForEach-Object构建自定义对象,两种方法都能满足需求:

方法1:使用计算属性(推荐)

通过Select-Object的计算属性语法,直接指定要提取的嵌套属性路径:

$ErrVar | Select-Object `
    @{Name='PSComputerName'; Expression={$_.OriginInfo.PSComputerName}},
    @{Name='ErrorMessage'; Expression={$_.Exception.Message}}

这里的@{Name='属性名'; Expression={属性路径}}结构,允许你深入访问错误对象的嵌套层级,将嵌套属性映射为顶层的自定义属性。

方法2:用ForEach-Object构建自定义对象

如果需要更灵活的处理逻辑,可以遍历错误对象并手动创建PSCustomObject:

$ErrVar | ForEach-Object {
    [PSCustomObject]@{
        PSComputerName = $_.OriginInfo.PSComputerName
        ErrorMessage   = $_.Exception.Message
    }
}

这种方式适合后续需要对错误信息做额外处理的场景。

为什么直接Select-Object OriginInfo.PSComputerName不行?

Select-Object默认只能识别顶层属性名,无法直接解析OriginInfo.PSComputerName这种嵌套路径,必须通过计算属性的表达式块来访问嵌套层级的属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 11:47:32