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
相关产品推荐
相关产品推荐

