diff --git a/GetInfoFromUniqueId.ps1 b/GetInfoFromUniqueId.ps1 index 35d74b2..36ceccc 100644 --- a/GetInfoFromUniqueId.ps1 +++ b/GetInfoFromUniqueId.ps1 @@ -2,60 +2,76 @@ # Use: # .\GetInfoFromUniqueId.ps1 -target ANPAXXXXXXXXXXXXXXXXX -name # Returns name of resource # .\GetInfoFromUniqueId.ps1 -target ANPAXXXXXXXXXXXXXXXXX -arn # Returns arn of resource -# .\GetInfoFromUniqueId.ps1 -target ANPAXXXXXXXXXXXXXXXXX -arn -name # Returns both arn and name of resource -# .\GetInfoFromUniqueId.ps1 -target ANPAXXXXXXXXXXXXXXXXX -arn -name -id # Returns arn, name and unique id of resource +# .\GetInfoFromUniqueId.ps1 -target ANPAXXXXXXXXXXXXXXXXX -id # Returns the ID, acts as a way of confirming the resource exists +# .\GetInfoFromUniqueId.ps1 -target ANPAXXXXXXXXXXXXXXXXX -json # Returns json of all the details Param ( -[string]$target, +[parameter(Mandatory=$true)][string]$target, [switch]$arn, [switch]$name, -[switch]$id +[switch]$id, +[switch]$json ) -$uniqueIdType = "$($target.Substring(0,4))" - -switch($uniqueIdType){ - # "ABIA" { $command="" } - # "ACCA" { $command="" } - "AGPA" { $command="list-groups" } - "AIDA" { $command="list-users" } - # "AIPA" { $command="" } - "AKIA" { $command="" } - "ANPA" { $command="list-policies" } - # "ANVA" { $command="" } - # "APKA" { $command="" } - "AROA" { $command="list-roles" } - "ASCA" { $command="list-server-certificates" } - # "ASIA" { $command="" } - default { Write-Output "Invalid 'target' value."; return} -} - -$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") -$awsCommand = "aws iam $command" -Invoke-Expression $awsCommand -OutVariable succOut -ErrorVariable errOut 2>&1 >$null - -if ($errOut -ne $null) { - Write-Output "$($errOut[1].ToString())" - return -} -else { - $returnedObjects = $succOut | ConvertFrom-Json -} - -foreach($object in $returnedObjects.Policies) { - if ("$target" -eq "$($object.PolicyId)") { - if ($name -eq $true) { - Write-Output "$($object.PolicyName)" - } - if ($arn -eq $true) { - Write-Output "$($object.Arn)" - } - if ($id -eq $true) { - Write-Output "$($object.PolicyId)" - } +function GetInfoFromUniqueId($target) { + $uniqueIdType = "$($target.Substring(0,4))" + + switch($uniqueIdType){ + # "ABIA" { $command="" } + # "ACCA" { $command="" } + "AGPA" { $command="list-groups" + $types="Groups" + $type="Group" } + "AIDA" { $command="list-users" + $types="Users" + $type="User" } + # "AIPA" { $command="" } + # "AKIA" { $command="" } + "ANPA" { $command="list-policies" + $types="Policies" + $type="Policy" } + # "ANVA" { $command="" } + # "APKA" { $command="" } + "AROA" { $command="list-roles" + $types="Roles" + $type="Role" } + # "ASCA" { $command="list-server-certificates" + # $types="ServerCertificateMetadataList" } + # "ASIA" { $command="" } + default { Write-Output "Invalid 'target' value."; return} + } + + $env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + $awsCommand = "aws iam $command" + Invoke-Expression $awsCommand -OutVariable succOut -ErrorVariable errOut 2>&1 >$null + + if ($errOut -ne $null) { + Write-Output "$($errOut[1].ToString())" return } + else { + $returnedObjects = ($succOut | ConvertFrom-Json).$types + } + + $selectedObject = $returnedObjects | Where-Object {$_."$($type)Id" -eq $target} + + if ($selectedObject -eq $null) { + Write-Output "Unique ID '$target' not found" + return + } + + if ($json) { + return $selectedObject | ConvertTo-Json + } + if ($name) { + return $selectedObject."$($type)Name" + } + if ($arn) { + return $selectedObject.Arn + } + if ($id) { + return $selectedObject."$($type)Id" + } } -Write-Output "Unique ID '$target' not found" -exit +return GetInfoFromUniqueId($target) \ No newline at end of file