private/Get-SpOHarmonizedEntity.ps1

Function Get-SpOHarmonizedEntity{
    <#
        Author = "Jos Lieben (jos@lieben.nu)"
        CompanyName = "Lieben Consultancy"
        Copyright = "https://www.lieben.nu/liebensraum/commercial-use/"
    #>
        
    Param(
        [Parameter(Mandatory=$true)][Object]$entity,
        [Switch]$alwaysReturn
    )

    if($entity.LoginName){
        if($entity.LoginName.Split("|")[0] -eq "c:0(.s"){
            Write-LogMessage -level 5 -message "Found $($entity.Title) special group"
            return [PSCustomObject]@{
                "Title" = $entity.Title
                "AadObjectId"= get-SpOAadObjectId -loginName $entity.LoginName
                "LoginName" = $entity.LoginName
                "PrincipalType" = "AllUsers"
                "Email" = "N/A"
            }      
        }
        if($entity.LoginName.Split("|")[0] -eq "c:0-.f"){
            Write-LogMessage -level 5 -message "Found $($entity.Title) special group"
            return [PSCustomObject]@{
                "Title" = $entity.Title
                "AadObjectId"= get-SpOAadObjectId -loginName $entity.LoginName
                "LoginName" = $entity.LoginName
                "PrincipalType" = "AllInternalUsers"
                "Email" = "N/A"
            }      
        }
        <#if($entity.LoginName.Split("|")[0] -eq "c:0t.c"){
            Write-LogMessage -level 5 -message "Found $($entity.Title) special group"
            return [PSCustomObject]@{
                "Title" = $entity.Title
                "AadObjectId"= get-SpOAadObjectId -loginName $spoSiteAdmin.LoginName
                "LoginName" = $entity.LoginName
                "PrincipalType" = "EntraSecurityGroup"
                "Email" = "N/A"
            }
        }#>

    }

    if($alwaysReturn){
        if($entity.ObjType -and $entity.ObjType -eq "Invitee"){
            return [PSCustomObject]@{
                "Title" = $entity.Title
                "AadObjectId"= ""
                "LoginName" = $entity.LoginName
                "PrincipalType" = $entity.PrincipalType
                "Email" = $entity.Email
            }
        }
        $aadObjectId = $Null; try{$aadObjectId = Get-SpOAadObjectId -loginName $entity.LoginName}catch{}
        $type = get-SpOPrincipalType -type $entity.PrincipalType
        if($type -eq "User"){
            if($entity.Title -eq "External User" -or $entity.LoginName -like "*#EXT#*"){
                $type = "External User"
            }else{
                $type = "Internal User"
            }
        }else{
            if($aadObjectId){
                $type = "EntraSecurityGroup"
            }
        }
        if($entity.LoginName.StartsWith("SharingLinks.")){
            $type = "SharingLink"
        }

        if($entity.LoginName -in @("Anonymous","AllInternalUsers")){
            $aadObjectId = $entity.LoginName
            $type = "SharingLink"
        }

        return [PSCustomObject]@{
            "Title" = $entity.Title
            "AadObjectId"= $aadObjectId
            "LoginName" = $entity.LoginName
            "PrincipalType" = $type
            "Email" = if($entity.Email){$entity.Email}else{$Null}
        }      
    }

    return $Null
}