Private/Get-AzAdvisorExtendedProperty.ps1
|
function Get-AzAdvisorExtendedProperty { [CmdletBinding()] param( [Parameter(Mandatory = $true)] [object]$Recommendation ) if ( $Recommendation.PSObject.Properties.Name -contains 'ExtendedPropertyObject' -and $null -ne $Recommendation.ExtendedPropertyObject ) { return $Recommendation.ExtendedPropertyObject } $extendedProperty = if ($Recommendation.PSObject.Properties.Name -contains 'ExtendedProperty') { $Recommendation.ExtendedProperty } elseif ($Recommendation.PSObject.Properties.Name -contains 'ExtendedProperties') { $Recommendation.ExtendedProperties } $extendedPropertyObject = $null if ($extendedProperty) { try { if ($extendedProperty -is [string]) { $extendedPropertyObject = $extendedProperty | ConvertFrom-Json } elseif ( $extendedProperty.PSObject.Properties.Name -contains 'AdditionalProperties' -and $null -ne $extendedProperty.AdditionalProperties ) { # Generated Az.Advisor models expose custom fields through this dictionary. $extendedPropertyObject = $extendedProperty.AdditionalProperties } else { # Az.Advisor versions can return an already-materialized property object. $extendedPropertyObject = $extendedProperty } } catch { Write-Verbose "Failed to parse ExtendedProperty: $_" } } $Recommendation | Add-Member ` -NotePropertyName ExtendedPropertyObject ` -NotePropertyValue $extendedPropertyObject ` -Force return $extendedPropertyObject } |