ps/Modules/Cole.PowerShell.Developer/Public/ConvertTo-AWSConfigEntry.ps1

45 lines
1.7 KiB
PowerShell
Raw Permalink Normal View History

2023-05-30 22:51:22 -07:00
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
}
}