Private/Get-ValidNonentities.ps1
Function Get-ValidNonentities { param ( [SolutionComponent[]]$NonentityComponent, [Microsoft.Xrm.Tooling.Connector.CrmServiceClient]$conn, [hashtable]$Metadata ) Write-Verbose "Identifying valid Nonentities..." $validNonentities = @() $componentSchema = @{ } foreach ($component in $NonentityComponent) { $exist = $Metadata.Target.Attributes[$component.ObjectId] if (-Not $exist) { $exist = $Metadata.Target[$component.ObjectId] } if (-Not $exist) { if ($Metadata.Target.BySchemaName.All[$component.SchemaName]) { if (-Not $componentSchema[$Component.SchemaName]) { $componentSchema[$Component.SchemaName] = Get-ComponentTypeHash -Component $Component -Conn $conn -Metadata $Metadata } $exist = $componentSchema[$component.SchemaName][$component.ObjectId] } elseif ($Metadata.Target.BySchemaName.Attributes[$component.SchemaName]) { $exist = $Metadata.Target.BySchemaName.Attributes[$component.SchemaName] | Where-Object -Property MetadataId -eq $component.ObjectId } else { } } if ($exist) { $validNonentities += $component } } Write-Output $validNonentities } |