45 lines
1.7 KiB
PowerShell
45 lines
1.7 KiB
PowerShell
|
function ConvertTo-AWSConfigEntry {
|
||
|
<#
|
||
|
.SYNOPSIS
|
||
|
Makes some neatly queryable AWSConfig entries
|
||
|
|
||
|
.PARAMETER AWSConfigEntry
|
||
|
Dynamic config data
|
||
|
#>
|
||
|
param (
|
||
|
[Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)]
|
||
|
[System.Collections.Hashtable[]]$ConfigEntry
|
||
|
)
|
||
|
begin {
|
||
|
$logLead = (Get-LogLeadName)
|
||
|
|
||
|
$defaultTypeName = 'AWSConfigEntry'
|
||
|
$defaultKeys = @('Name')
|
||
|
$defaultDisplaySet = @('Name','role_arn','mfa_serial','region','source_profile')
|
||
|
$defaultDisplayPropertySet = New-Object System.Management.Automation.PSPropertySet('DefaultDisplayPropertySet',[string[]]$defaultDisplaySet)
|
||
|
$defaultKeyPropertySet = New-Object System.Management.Automation.PSPropertySet('DefaultKeyPropertySet',[string[]]$defaultKeys)
|
||
|
$PSStandardMembers = [System.Management.Automation.PSMemberInfo[]]@($defaultDisplayPropertySet,$defaultKeyPropertySet)
|
||
|
}
|
||
|
process {
|
||
|
$return = @()
|
||
|
|
||
|
foreach ($entry in $ConfigEntry) {
|
||
|
try {
|
||
|
$properties = @{}
|
||
|
foreach ($key in $entry.Keys) {
|
||
|
$properties[$key.Replace(' ','')] = $entry.$key
|
||
|
}
|
||
|
|
||
|
$config = New-Object PSCustomObject -Property $properties
|
||
|
$config.PSObject.TypeNames.Insert(0,$defaultTypeName)
|
||
|
$config | Add-Member -MemberType MemberSet -Name PSStandardMembers -Value $PSStandardMembers
|
||
|
$return += $config
|
||
|
} catch {
|
||
|
Write-Warning "$logLead : Could not convert item to AWSConfigEntry object. Check error below."
|
||
|
Write-ErrorObject -ErrorItem $PSItem
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return $return
|
||
|
}
|
||
|
}
|