1

第一次在这里发海报。

我创建了一个小脚本,用于输出 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

等等。

4

1 回答 1

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 的输出以获取每个用户及其用户名
  • 对于每个用户,将 Alias、GroupName 和 UserName 存储在具有相同名称属性的PSCustomObject中。
  • 将 PSCustomObject 的输出集合通过管道传输到ConvertTo-CSVset-NoTypeInformation以获取 CSV 格式的内容。请注意,如果要更改分隔符,-Delimiter可以指定一个标志。
  • 重定向输出以mycsv.csv将文件写入文件系统

您的尝试中可能给您带来麻烦的快速说明:远离使用Write-Host在终端之外输出数据;Write-Host不写入输出流。这是一篇关于该主题的好博客文章,供进一步阅读。

于 2016-10-12T04:33:56.360 回答