1

впервые лотерей здесь.Как получить вывод CSV при запросе для групп и пользователей IAM?

Я создал небольшой скрипт, который выводит членство в группе в 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 

и так далее.

ответ

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
  • Для каждого пользователя хранятся псевдоним, имя_группы и имя пользователя в PSCustomObject со свойствами с тем же именем.
  • Трубы выводят коллекцию PSCustomObject до ConvertTo-CSV с -NoTypeInformation, чтобы получить содержимое в формате CSV. Обратите внимание, что если вы хотите изменить разделитель, есть флаг -Delimiter, который вы можете указать.
  • перенаправляет вывод mycsv.csv для записи файла к файловой системе

Небольшое примечание от вашей попытки, что, вероятно, дал вам неприятности: Держитесь подальше от использования Write-Host для вывода данных за пределами вашего терминала; Write-Host не записывается в выходной поток. Вот хороший blog post по этому предмету для дальнейшего чтения.