function Get-FlattenedAppsettingJsonKeyValue { param( [string]$Key, [object]$Value ) $returnValues = @() if ($Value.GetType().Name -eq "PSCustomObject") { $Value = ConvertTo-Hash $Value } if ($Value.GetType().Name -match "Hashtable") { $deepPairs = (Get-FlattenedAppsettingJson $Value) foreach($pair in $deepPairs) { $returnValues += @{ Key = "$Key`:$($pair.Key)"; Value = $pair.Value} } } elseif ($Value -is [System.Collections.IEnumerable] -and $Value -isnot [string]) { for($i = 0; $i -lt $Value.Count; $i++) { $item = $Value[$i] $deepPairs = (Get-FlattenedAppsettingJson $item) foreach($pair in $deepPairs) { $returnValues += @{ Key = "$Key`[$i]`:$($pair.Key)"; Value = $pair.Value} } } } else { $returnValues += @{ Key = $Key; Value = $Value; } } return $returnValues }