internal/functions/Confirm-MetadataMatches.ps1
|
function Confirm-MetadataMatches { [CmdletBinding()] param( $ExistingMetadataObj, $DefinedMetadataObj, [switch] $SuppressPacOwnerIdMessage ) $match = $false $changePacOwnerId = $false if ($null -eq $ExistingMetadataObj) { return $false, $true } $existingMetadata = Get-DeepCloneAsOrderedHashtable $ExistingMetadataObj $definedMetadata = Get-DeepCloneAsOrderedHashtable $DefinedMetadataObj # Remove Azure system-generated metadata properties # These are automatically managed by Azure and should not be compared $systemManagedProperties = @("createdBy", "createdOn", "updatedBy", "updatedOn", "lastSyncedToArgOn") foreach ($property in $systemManagedProperties) { if ($existingMetadata.ContainsKey($property)) { $existingMetadata.Remove($property) } } $existingPacOwnerId = $existingMetadata.pacOwnerId $definedPacOwnerId = $definedMetadata.pacOwnerId if ($existingPacOwnerId -ne $definedPacOwnerId) { if (-not $SuppressPacOwnerIdMessage) { Write-Information "pacOwnerId has changed from '$existingPacOwnerId' to '$definedPacOwnerId'" } $changePacOwnerId = $true } if ($definedMetadata.ContainsKey("pacOwnerId")) { $definedMetadata.Remove("pacOwnerId") } if ($existingMetadata.ContainsKey("pacOwnerId")) { $null = $existingMetadata.Remove("pacOwnerId") } if ($existingMetadata.psbase.Count -eq $definedMetadata.psbase.Count) { $match = Confirm-ObjectValueEqualityDeep $existingMetadata $definedMetadata } if (!$match) { $null = $null } return $match, $changePacOwnerId } |