Private/Migration/CloudData/Invoke-CompareGuid.ps1

function Invoke-CompareGuid {
    [CmdletBinding()]
    param (
        [Parameter()]
        [hashtable]
        $RMHash,

        [Parameter()]
        [hashtable]
        $CloudHash,

        [Parameter()]
        $Numbered
    )

    if ($Numbered) {
        $i = 0
        $Count = @($Numbered).Count
        foreach ($Num in $Numbered) {
            $i++
            [PSCustomObject]@{
                Num                = '[{0} of {1}]' -f $i, $Count
                DisplayName        = $Num.DisplayName
                OrganizationalUnit = $Num.OrganizationalUnit
                ExchangeGuidMatch  = $Num.ExchangeGuidMatch
                ArchiveGuidMatch   = $Num.ArchiveGuidMatch
                ExchangeGuidOnPrem = $Num.ExchangeGuidOnPrem
                ExchangeGuidCloud  = $Num.ExchangeGuidCloud
                ArchiveGuidOnPrem  = $Num.ArchiveGuidOnPrem
                ArchiveGuidCloud   = $Num.ArchiveGuidCloud
                UserPrincipalName  = $Num.UserPrincipalName
            }
        }
    }
    else {
        foreach ($RMKey in $RMHash.keys) {
            if ($CloudHash.ContainsKey($RMKey)) {
                [PSCustomObject]@{
                    Displayname           = if ($RMHash[$RMKey]['DisplayName']) { $RMHash[$RMKey]['DisplayName'] } else { $RMHash[$RMKey]['DisplayName'] }
                    UserPrincipalName     = $RMKey
                    PrimarySmtpAddress    = $RMHash[$RMKey]['PrimarySmtpAddress']
                    OrganizationalUnit    = $RMHash[$RMKey]['OrganizationalUnit']
                    ExchangeGuidMatch     = $RMHash[$RMKey]['ExchangeGuid'] -eq $CloudHash[$RMKey]['ExchangeGuid']
                    ArchiveGuidMatch      = $RMHash[$RMKey]['ArchiveGuid'] -eq $CloudHash[$RMKey]['ArchiveGuid']
                    ExchangeGuidOnPrem    = $RMHash[$RMKey]['ExchangeGuid']
                    ExchangeGuidCloud     = $CloudHash[$RMKey]['ExchangeGuid']
                    ArchiveGuidOnPrem     = $RMHash[$RMKey]['ArchiveGuid']
                    ArchiveGuidCloud      = $CloudHash[$RMKey]['ArchiveGuid']
                    EmailCount            = $RMHash[$RMKey]['EmailCount']
                    AllEmailAddresses     = $RMHash[$RMKey]['AllEmailAddresses']
                    EmailAddresses        = $RMHash[$RMKey]['EmailAddresses']
                    EmailAddressesNotSmtp = $RMHash[$RMKey]['EmailAddressesNotSmtp']
                }
            }
            else {
                [PSCustomObject]@{
                    Displayname           = if ($RMHash[$RMKey]['DisplayName']) { $RMHash[$RMKey]['DisplayName'] } else { $RMHash[$RMKey]['DisplayName'] }
                    UserPrincipalName     = $RMKey
                    PrimarySmtpAddress    = $RMHash[$RMKey]['PrimarySmtpAddress']
                    OrganizationalUnit    = $RMHash[$RMKey]['OrganizationalUnit']
                    ExchangeGuidMatch     = 'CLOUDUPNNOTFOUND'
                    ArchiveGuidMatch      = 'CLOUDUPNNOTFOUND'
                    ExchangeGuidOnPrem    = $RMHash[$RMKey]['ExchangeGuid']
                    ExchangeGuidCloud     = 'CLOUDUPNNOTFOUND'
                    ArchiveGuidOnPrem     = $RMHash[$RMKey]['ArchiveGuid']
                    ArchiveGuidCloud      = 'CLOUDUPNNOTFOUND'
                    EmailCount            = $RMHash[$RMKey]['EmailCount']
                    AllEmailAddresses     = $RMHash[$RMKey]['AllEmailAddresses']
                    EmailAddresses        = $RMHash[$RMKey]['EmailAddresses']
                    EmailAddressesNotSmtp = $RMHash[$RMKey]['EmailAddressesNotSmtp']
                }
            }
        }
    }
}