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

PowerShell:创建对象时能否在同一对象的属性中引用另一属性?

PowerShell自定义对象创建问题解答

你的目标写法不可行,原因很直接:在执行New-Object创建$Obj的过程中,哈希表里的所有属性值会被优先计算完成,此时$Obj还没完成赋值,引用$Obj.name只会得到$null,最终Type属性的值会变成$null + "world",也就是world,完全达不到你想要的helloworld效果。

下面是几种可行的替代方案:

方案1:先缓存属性值,再构造对象

先把Name的值存到临时变量里,再用这个变量生成Type属性:

$nameVal = "hello"
$Obj = New-Object PSObject -Property @{
    Name = $nameVal
    Type = $nameVal + "world"
}

方案2:用Select-Object实现“一行式”创建

借助Select-Object的计算属性特性,在管道上下文里可以直接引用已定义的属性:

$Obj = "" | Select-Object @{Name='Name'; Expression={'hello'}}, @{Name='Type'; Expression={$_.Name + 'world'}}

方案3:使用[PSCustomObject]类型加速器(推荐)

PowerShell 3.0及以上版本支持这种更简洁高效的写法,同样需要先缓存属性值:

$nameVal = "hello"
$Obj = [PSCustomObject]@{
    Name = $nameVal
    Type = $nameVal + "world"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 12:15:44