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

PowerShell遍历AWS账户JSON数据调用AWS CLI获取联系信息异常求助

问题解决:AWS CLI遍历账户获取联系信息失败

问题根源

你的代码存在两个关键问题:

  • $i 是包含accid属性的完整对象,直接传入--account-id会输出对象的字符串表示(而非纯账户ID),导致命令格式错误
  • 当前代码仅用Write-Host打印命令,并未实际执行AWS CLI请求

另外,若你是直接将AWS CLI的JSON输出赋值给$awsAccData,还需要确保已将JSON字符串转换为PowerShell可识别的对象。

修正后的完整代码

# 1. 获取并解析AWS账户列表为PowerShell对象
$awsAccData = aws organizations list-accounts | ConvertFrom-Json | Select-Object -ExpandProperty Accounts | ForEach-Object {
    [PSCustomObject]@{
        accid = $_.Id
    }
}

# 2. 遍历账户,执行联系信息查询命令
foreach ($account in $awsAccData) {
    # 打印格式化后的命令(可选,用于调试)
    Write-Host "Executing: aws account get-contact-information --account-id $($account.accid)"
    # 实际执行AWS CLI命令并输出结果
    aws account get-contact-information --account-id $account.accid
}

关键修正点

  • 解析JSON为对象:使用ConvertFrom-Json将AWS CLI返回的JSON字符串转换为PowerShell对象,确保能正确提取accid属性
  • 提取账户ID:通过$account.accid(而非直接用$account)获取纯账户ID值,避免传递整个对象
  • 实际执行命令:移除仅打印的逻辑,添加实际的AWS CLI调用,同时保留可选的调试打印语句

额外说明

若你的$awsAccData是通过其他方式生成的JSON数组,只需确保遍历过程中正确访问accid属性即可,核心是传递纯字符串格式的账户ID给--account-id参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 17:42:03