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

PowerShell动态拼接PSObject成员值构建变量问题求助

解决PowerShell动态引用PSCustomObject成员的问题

方法一:使用Get-Variable(推荐,避免注入风险)

你当前的代码只是拼接出了变量名的字符串,并没有实际获取到对应PSCustomObject的属性值。通过Get-Variable可以根据变量名动态获取目标对象,再直接访问其属性:

$SiteCode_SHA = [PSCustomObject]@{
    CountryCode = "CH"
    SiteCode = "SHA"
    ContainerCode = "CHA"
}

$SiteCode_IND = [PSCustomObject]@{
    CountryCode = "IN"
    SiteCode = "MOB"
    ContainerCode = "IND"
}

[array]$ComputerTypeArray = "LT", "PC", "PR"

[string]$SiteCodeInput = (Read-Host -Prompt "Prompt #1 Input Options:  SHA, IND")

# 动态获取对应的SiteCode变量对象
$siteObject = Get-Variable -Name "SiteCode_$SiteCodeInput" -ValueOnly
# 提取CountryCode属性值
$ProposedComputerName = $siteObject.CountryCode

# 后续结合计算机类型构建完整名称示例
$selectedType = $ComputerTypeArray | Get-Random
$fullComputerName = "$ProposedComputerName-$($siteObject.SiteCode)-$selectedType-001"
Write-Host "生成的计算机名:$fullComputerName"

方法二:用哈希表统一管理站点配置(更优雅的可维护方案)

与其单独定义多个SiteCode_xxx变量,不如把所有站点对象存入一个哈希表,动态引用会更直观,后续新增站点也只需在哈希表中添加条目:

# 哈希表统一存储所有站点配置
$SiteConfigs = @{
    SHA = [PSCustomObject]@{
        CountryCode = "CH"
        SiteCode = "SHA"
        ContainerCode = "CHA"
    }
    IND = [PSCustomObject]@{
        CountryCode = "IN"
        SiteCode = "MOB"
        ContainerCode = "IND"
    }
}

[array]$ComputerTypeArray = "LT", "PC", "PR"

[string]$SiteCodeInput = (Read-Host -Prompt "Prompt #1 Input Options:  SHA, IND")

# 验证输入有效性后获取属性值
if ($SiteConfigs.ContainsKey($SiteCodeInput)) {
    $ProposedComputerName = $SiteConfigs[$SiteCodeInput].CountryCode
    # 构建完整计算机名示例
    $selectedType = $ComputerTypeArray | Get-Random
    $fullComputerName = "$ProposedComputerName-$($SiteConfigs[$SiteCodeInput].SiteCode)-$selectedType-001"
    Write-Host "生成的计算机名:$fullComputerName"
} else {
    Write-Warning "输入的站点代码无效,请输入SHA或IND"
}

方案说明

  • 方法一适合对现有代码改动较小的场景,通过Get-Variable实现动态变量引用;
  • 方法二优化了配置管理结构,代码可读性和扩展性更强,是更推荐的实践方式;
  • 两种方案都能解决你当前字符串拼接无法读取PSObject成员值的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 21:50:33