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

PowerShell:如何通过变量存储的属性路径访问对象嵌套属性

实现嵌套属性路径访问的方法

方法1:拆分路径并循环遍历(推荐,安全可控)

把存储路径的字符串按.拆分,逐个访问对象属性逐步深入,这是最安全可靠的方式:

# 示例复杂对象
$a = [PSCustomObject]@{
    b = [PSCustomObject]@{
        c = "myvalue"
    }
}

$replace = "b.c"

# 遍历路径片段获取嵌套属性
$currentObj = $a
foreach ($prop in $replace.Split('.')) {
    $currentObj = $currentObj.$prop
}

$currentObj  # 输出: myvalue

方法2:使用Invoke-Expression(注意安全风险)

如果路径字符串来源绝对可信,可以直接拼接代码并执行:

$a = [PSCustomObject]@{
    b = [PSCustomObject]@{
        c = "myvalue"
    }
}

$replace = "b.c"

$result = Invoke-Expression "`$a.$replace"
$result  # 输出: myvalue

⚠️ 警告:若$replace包含不可信内容,此方法会执行恶意代码,仅在路径完全可控时使用。

方法3:使用.NET反射(适配复杂对象场景)

针对非公开属性或特殊.NET对象,可通过反射实现属性访问:

$a = [PSCustomObject]@{
    b = [PSCustomObject]@{
        c = "myvalue"
    }
}

$replace = "b.c"

$currentObj = $a
foreach ($prop in $replace.Split('.')) {
    $propInfo = $currentObj.GetType().GetProperty($prop)
    if ($propInfo) {
        $currentObj = $propInfo.GetValue($currentObj)
    } else {
        $currentObj = $null
        break
    }
}

$currentObj  # 输出: myvalue

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:10:48