查询IAM组和用户时如何获取CSV输出?

时间:2016-10-12 02:55:27

标签: powershell csv amazon-web-services amazon-iam aws-powershell

这里的第一次海报。

我创建了一个在AWS中输出组成员资格的小脚本。

我已经得到了脚本,它输出了所需的结果,但我需要帮助将数据以可读格式输入到csv文件中。

$awsgroupnames = Get-IAMGroups  
$accountname = Get-IAMAccountAlias 

foreach ($awsgroupname in $awsgroupnames) {
    $groupuser = Get-IAMGroup -groupname ($awsgroupname.GroupName)
    $usernames = $groupuser.users | select UserName 
    write-host $accountname ($awsgroupname.groupname) ($usernames.username)
    }

输出看起来像这样。

Account Alias - Group - User

aws-dxxxd-mxxer axx-admin xxhie sxxwj bhxxwk hxxv rxxerd cxxx axxw-sf-msdsmt

aws-dxxxd-mxxer aws-casesupport 

aws-dxxxd-mxxer aws-readonly gixxxi mxxxxilj kxxng bxxnst txxxgd rxm kxxxrs

aws-dxxxd-mxxer billing-admin bsdffdk crcccdi

aws-dxxxd-mxxer Billing_Access

aws-dxxxd-mxxer vdc-axxxs mxxxab rxxxd cxxxmi aws-srxxxc-mxxt

aws-dxxxd-mxxer vpc-axxxn mxxxab mxxxj mxxxnr

如何以下列格式将其导出到csv?

Account Alias - Group1 - User1

Account Alias - Group1 - User2

Account Alias - Group1 - User3

Account Alias - Group2 - User1

Account Alias - Group2 - User2

Account Alias - Group3 - User1

Account Alias - Group4 -  Blank for no user

等等。

1 个答案:

答案 0 :(得分:0)

这是PowerShell v3.0 +的另一种解决方案,它以一种简化CSV提取的方式对数据进行分组。

代码:

$alias = Get-IAMAccountAlias

Get-IAMGroups | % { 
  $group = $_;
  (Get-IAMGroup -groupname $_.GroupName).Users | % { 
    [pscustomobject]@{ 
      Alias = $alias; 
      GroupName = $group.groupname; 
      UserName = $_.UserName
    } 
  }
} | ConvertTo-Csv -NoTypeInformation > mycsv.csv

示例输出:

"Alias","GroupName","UserName"
"myacct","admins","myuser1"
"myacct","admins","myuser2"
"myacct","users","myuser3"

这个脚本:

  • 迭代Get-IAMGroups的输出以获取每个GroupName
  • 迭代Get-IAMGroup的输出以获取每个用户及其UserName
  • 对于每个用户,将Alias,GroupName和UserName存储在PSCustomObject中,并使用相同名称的属性。
  • 将PSCustomObject的输出集合管道设置为ConvertTo-CSV,并设置-NoTypeInformation以获取CSV格式的内容。请注意,如果要更改分隔符,可以指定-Delimiter标记。
  • 将输出重定向到mycsv.csv以将文件写入文件系统

您尝试的快速说明可能会给您带来麻烦:远离使用Write-Host输出终端以外的数据; Write-Host不会写入输出流。这是一个很好的blog post关于这个主题的进一步阅读。