Private/Remove-NullProperties.ps1
|
# Remove-NullProperties.ps1 # Recursively removes null values from hashtables and arrays before JSON output. # Part of the M365-QuickAssess module -- not exported. function Remove-NullProperties { param ( $Object ) if ( $null -eq $Object ) { return $null } if ( $Object -is [System.Management.Automation.PSCustomObject] ) { $new = [ordered]@{} foreach ( $prop in $Object.PSObject.Properties ) { if ( $null -eq $prop.Value ) { continue } $value = Remove-NullProperties -Object $prop.Value if ( $null -ne $value ) { $new[$prop.Name] = $value } } return $new } if ( $Object -is [System.Collections.IDictionary] ) { $new = [ordered]@{} foreach ( $key in $Object.Keys ) { if ( $null -eq $Object[$key] ) { continue } $value = Remove-NullProperties -Object $Object[$key] if ( $null -ne $value ) { $new[$key] = $value } } return $new } if ( $Object -is [System.Collections.IEnumerable] -and -not ( $Object -is [string] ) ) { $newArray = @() foreach ( $item in $Object ) { if ( $null -eq $item ) { continue } $cleanItem = Remove-NullProperties -Object $item if ( $null -ne $cleanItem ) { $newArray += $cleanItem } } return $newArray } return $Object } |