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

PowerShell嵌套数组成员访问失败及skuId合并为CSV格式解决方案求助

解决PowerShell嵌套哈希表数组的skuId提取与合并问题

嘿,我一眼就瞅见问题所在了!你现在的代码有两个关键小错误,咱们一步步捋清楚:

1. 变量定义的语法错误

你把$licenses定义成了脚本块(用大括号{}包裹),但实际上你需要的是一个哈希表数组,得用PowerShell的数组语法@(...)来包裹才行。

2. 循环里的变量误用

你的foreach循环里,每次迭代的变量是$license,但你却一直在访问整个数组$licenses,自然拿不到单个元素的skuId啦!

修正后的完整代码

# 正确定义哈希表数组:用@()包裹,而不是{}
$licenses = @(
    @{disabledPlans=System.Object[]; skuId='f30db892-07e9-47e9-837c-80727f46fd3d'},
    @{disabledPlans=System.Object[]; skuId='f245ecc8-75af-4f8e-b61f-27d8114de5f3'}
)

# 提取所有skuId,合并成CSV格式字符串(PowerShell 6+版本)
$skuIdCsv = $licenses | ForEach-Object { $_.skuId } | Join-String -Separator ', '

# 如果是PowerShell 5.x版本,用-join运算符替代Join-String
# $skuIdCsv = ($licenses | ForEach-Object { $_.skuId }) -join ', '

# 输出结果
Write-Host $skuIdCsv

代码说明

  • 用@(...)把哈希表包裹成数组,确保$licenses是真正的数组类型,能正常遍历。
  • 用管道结合ForEach-Object遍历每个哈希表,提取单个元素的skuId属性。
  • 最后用Join-String(或-join运算符)把所有skuId用, 连接成你需要的CSV格式字符串。

运行这段代码后,你就能得到想要的结果:f30db892-07e9-47e9-837c-80727f46fd3d, f245ecc8-75af-4f8e-b61f-27d8114de5f3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 20:42:45