1

Affiche pour la première fois ici.Comment obtenir une sortie CSV lors de l'interrogation de groupes et d'utilisateurs IAM?

J'ai créé un petit script qui génère l'appartenance au groupe dans AWS.

J'ai le script au point qu'il sort les résultats souhaités mais j'ai besoin d'aide pour obtenir les données dans un format lisible dans un fichier 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) 
    } 

La sortie ressemble à ceci.

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 

Comment puis-je obtenir ce exporter vers un fichier CSV dans le format suivant?

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 

et ainsi de suite.

Répondre

0

Voici une solution alternative pour powershell v3.0 + qui regroupe les données de manière à simplifier l'extraction vers CSV.

code:

$alias = Get-IAMAccountAlias 

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

Résultat:

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

Ce script:

  • itère la sortie de Get-IAMGroups pour obtenir chaque GroupName
  • itère la sortie de Get-IAMGroup pour obtenir chaque utilisateur, et leur nom d'utilisateur
  • Pour chaque utilisateur, stocke l'alias, le nom de groupe et le nom d'utilisateur dans un PSCustomObject avec des propriétés du même nom.
  • Ajoute la collection de sortie de PSCustomObject à ConvertTo-CSV avec -NoTypeInformation pour obtenir le contenu au format CSV. Notez ici que si vous voulez changer le délimiteur, il y a un drapeau -Delimiter que vous pouvez spécifier.
  • redirige la sortie vers mycsv.csv pour écrire le fichier sur votre système de fichiers

Une note rapide de votre tentative que vous a probablement donné du mal: Restez à l'écart de l'utilisation Write-Host aux données de sortie au-delà de votre terminal; Write-Host n'écrit pas dans le flux de sortie. Voici un bon blog post sur le sujet pour plus de lecture.