1

처음 포스터가 여기 있습니다.IAM 그룹 및 사용자를 쿼리 할 때 CSV 출력을 얻으려면 어떻게합니까?

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

다음은 CSV 로의 추출을 좀 더 간단하게하는 방식으로 데이터를 그룹화하는 powershell v3.0 +의 대체 솔루션입니다.

코드 :

$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" 

이 스크립트 :

  • 반복
  • 반복의 출력을 각각의 그룹 이름을 얻을 받기-IAMGroups의 출력 Get-IAMGroup을 사용하여 각 사용자 및 해당 사용자 이름 가져 오기
  • 각 사용자에 대해 동일한 이름의 등록 정보를 사용하여 별칭, 그룹 이름 및 사용자 이름을 PSCustomObject에 저장합니다.
  • PSCustomObject의 출력 컬렉션을 -NoTypeInformation으로 설정하여 ConvertTo-CSV으로 파이프하고 콘텐츠를 CSV 형식으로 가져옵니다. 구분 기호를 변경하려면 지정할 수있는 -Delimiter 플래그가 있습니다.
  • 는 파일 시스템

아마 당신에게 문제를 준 당신의 시도에서 빠른 노트에 파일을 작성하는 mycsv.csv 출력을 리디렉션 : 터미널 넘어 출력 데이터에 Write-Host를 사용하여 접근하지 말 것; Write-Host은 출력 스트림에 쓰지 않습니다. 더 읽을 거리가있는 여기에 좋은 blog post이 있습니다.

관련 문제