internal/functions/Convert-HashtableToFlatPsObject.ps1
function Convert-HashtableToFlatPsObject { param ( [Parameter(Mandatory = $true)] $Hashtable ) $newObject = @() Remove-Variable valueObject -ErrorAction SilentlyContinue foreach ($hash in $Hashtable) { $valueObject = New-Object PSObject foreach ($hKey in $Hash.Keys) { if (!($Hash.$hKey -is [string] -or $Hash.$hKey -is [int] -or $Hash.$hKey -is [double] -or $Hash.$hKey -is [decimal] -or $Hash.$hKey -is [datetime] -or $Hash.$hKey -is [char] -or $Hash.$hKey -is [bool])) { if (!($valueObject)) { $valueObject = New-Object PSObject -Property @{$hkey = $(ConvertTo-Json -InputObject $Hash.$hKey -depth 100 -Compress) } } else { Add-Member -InputObject $valueObject -MemberType NoteProperty -Name $hKey -Value $(ConvertTo-Json -InputObject $Hash.$hKey -depth 100 -Compress) } } else { if (!($valueObject)) { $valueObject = New-Object PSObject -Property @{$hkey = $hash.$hkey } } else { Add-Member -InputObject $valueObject -MemberType NoteProperty -Name $hKey -Value $Hash.$hKey } } $newObject += $valueObject Remove-Variable hKey -ErrorAction SilentlyContinue } Remove-Variable hash -ErrorAction SilentlyContinue Remove-Variable valueObject -ErrorAction SilentlyContinue } return $newObject } |