Private/Get-CorrectGuidForSavedQuery.ps1

Function Get-CorrectGuidForSavedQuery {
    param
    (
        [SolutionComponent]$Component,
        [hashtable]$metadata,
        [Microsoft.Xrm.Tooling.Connector.CrmServiceClient]$SourceConn,
        [Microsoft.Xrm.Tooling.Connector.CrmServiceClient]$TargetConn
    )

    $savedQueryName = Get-SavedQueryName -Component $Component -Conn $SourceConn
    $savedQueryReturnedTypeCode = Get-SavedQueryReturnedTypeCode -Component $Component -Metadata $Metadata -Conn $SourceConn
    
    $query = @"
    <fetch>
  <entity name="savedquery" >
    <filter type="and" >
      <condition attribute="name" operator="eq" value="$savedQueryName" />
      <condition attribute="returnedtypecode" operator="eq" value="$savedQueryReturnedTypeCode" />
    </filter>
  </entity>
</fetch>
"@


    try {
        $result = (Get-CrmRecordsByFetch -Conn $TargetConn -Fetch $query -AllRows -ErrorAction Stop -WarningAction SilentlyContinue).CrmRecords
    } catch { 
        $err = $_.Exception.Message
        throw $err
    }

    $targetMetadataId = $result[0].savedqueryid

    if ($targetMetadataId -and ($targetMetadataId -ne $Component.ObjectId)) {
        $component.OriginalObjectId = $component.ObjectId
        $component.ObjectId = $targetMetadataId
        Write-Verbose ("Set objectid {0} to target metadataid {1} for savedquery {2} on ObjectTypeCode {3} " -f $Component.OriginalObjectId, $targetMetadataId, $savedQueryName, $savedQueryReturnedTypeCode)
    }

    Write-Output $Component

}