Búsqueda de sitios web

SharePoint Online: sincronizar la propiedad del perfil de usuario desde Azure AD mediante PowerShell


Requisito: Sincronizar la propiedad del perfil de usuario de Azure Active Directory con SharePoint Online mediante PowerShell.

¿Cómo sincronizar una propiedad de perfil de usuario en SharePoint Online?

En un entorno típico de SharePoint Online, el proceso de sincronización de perfiles de usuario importa perfiles de usuario desde AD local a Azure (a través de la herramienta de sincronización de AD) y luego desde Azure Active Directory (AAD), ciertas propiedades se asignan y sincronizan con SharePoint Online. Perfiles de usuario. No todas las propiedades de Azure AD están sincronizadas con SharePoint Online. Tengo el requisito de sincronizar la propiedad "Teléfono móvil" con el perfil de usuario de SharePoint Online. Aunque la herramienta Azure AD Sync importa la propiedad "Móvil" de AD local, SharePoint no tiene una asignación para esta propiedad.

Y la mala noticia es: actualmente, no hay formas de asignar y sincronizar propiedades adicionales desde la página de administración de SharePoint Online (como lo hacemos en SharePoint local). Sin embargo, podemos recorrer los usuarios de Azure AD y actualizar la propiedad del perfil de usuario en SharePoint Online mediante el script CSOM PowerShell.

PowerShell para importar una propiedad de perfil de usuario en SharePoint Online:

Usando Azure AD PowerShell y el modelo de objetos del lado del cliente (CSOM) de SharePoint, podemos obtener el valor de la propiedad del perfil de usuario de Azure AD y actualizar las propiedades correspondientes en los perfiles de usuario de SharePoint Online y luego programar este script para que se ejecute de forma regular. . Sincronicemos el teléfono móvil desde Azure Active Directory con SharePoint Online usando PowerShell.


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
Add-Type -Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.UserProfiles.dll"

Function Sync-UserProfileProperty()
{
    Param
    (
        [Parameter(Mandatory=$true)] [string] $AdminSiteUrl,
        [Parameter(Mandatory=$true)] [string] $UserPrincipalName,
        [Parameter(Mandatory=$true)] [string] $ADPropertyName,
        [Parameter(Mandatory=$true)] [string] $SPOPropertyName
    )
    #Get Credentials to connect
    $Cred = Get-Credential
 
    Try {
        #Connect to AzureAD
        Connect-AzureAD -Credential $Cred | Out-Null
 
        #Get the User Property from AzureAD
        $AzureADUser = Get-AzureADUser -ObjectId $UserPrincipalName
        $ADUserPropertyValue = $AzureADUser | Select -ExpandProperty $ADPropertyName
        #To get extended property value, use: $AzureADUser.ExtensionProperty.Item($ADPropertyName)

        #Setup the context
        $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($AdminSiteUrl)
        $Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
  
        #Get User Profile Manager
        $PeopleManager = New-Object Microsoft.SharePoint.Client.UserProfiles.PeopleManager($Ctx)
  
        #Sync User Profile Property from AD
        $UserAccount = "i:0#.f|membership|$UserPrincipalName"
        $PeopleManager.SetSingleValueProfileProperty($UserAccount, $SPOPropertyName, $ADUserPropertyValue)
        $Ctx.ExecuteQuery()
        Write-host "User Profile Property has been Synched for: $UserPrincipalName" -f Green 
    }
    Catch {
        write-host -f Red "Error Synching User Profile Property!" $_.Exception.Message
    }
}
#Config parameters
$AdminSiteUrl = "https://crecent-admin.sharepoint.com"
$UserPrincipalName = "Salaudeen@crescent.com"
$ADPropertyName = "MobilePhone"
$SPOPropertyName = "CellPhone"

#Call the function to sync a Property from Azure AD to SharePoint Online
Sync-UserProfileProperty -AdminSiteUrl $AdminSiteURL -UserPrincipalName $UserPrincipalName -ADPropertyName $ADPropertyName -SPOPropertyName $SPOPropertyName

Este script de PowerShell importa una propiedad determinada de Azure AD a SharePoint Online para un usuario en particular. Asegúrese de tener el módulo Azure AD instalado en su máquina antes de ejecutar este script:


Install-Module AzureAD

PowerShell para sincronizar el valor de propiedad del perfil de usuario para todos los usuarios

Esta vez, sincronicemos una propiedad de perfil de usuario para todos los usuarios de Azure AD con SharePoint Online mediante PnP PowerShell. Además, comprobemos lo siguiente:

  1. Si la propiedad del perfil de usuario de AD tiene algún valor (¡no nulo!)
  2. ¡Si la propiedad del perfil de usuario en SharePoint Online no tiene ningún valor existente!

#Config Variables
$AdminSiteURL = "https://crescent-admin.sharepoint.com"
$ADPropertyName = "Department"
$SPOPropertyName = "Department"

#Get Credentials to connect to Azure AD and SharePoint Online Admin Center
$Cred = Get-Credential

Try {
    #Connect to AzureAD
    Connect-AzureAD -Credential $Cred | Out-Null

    #Get All Users of the Domain from AzureAD 
    $AllUsers = Get-AzureADUser -All:$True -Filter "UserType eq 'Member'" 
    Write-host "Total Number of User Profiles Found:"$AllUsers.Count  

    #Connect to PnP Online
    Connect-PnPOnline -Url $AdminSiteURL -Credentials $Cred

    #Iterate through All Users
    $Counter = 1
    ForEach($User in $AllUsers)
    {
        Write-host "`nUpdating User Profile Property for: $($User.UserPrincipalName)" -f Yellow

        #Get the User Property value from Azure AD        
        $ADUserPropertyValue = $User | Select -ExpandProperty $ADPropertyName

        #Check if the AD Property is not Null
        If (!([string]::IsNullOrEmpty($ADUserPropertyValue))) 
        {
            #Get existing User Profile Property from SharePoint
            $UserAccount = "i:0#.f|membership|$($User.UserPrincipalName)"
            $UserProfile = Get-PnPUserProfileProperty -Account $UserAccount
            $UserProfileProperty = $UserProfile.UserProfileProperties[$SPOPropertyName]

            #Check if the Existing SharePoint User Profile Property is Null
            If (([string]::IsNullOrEmpty($UserProfileProperty))) 
            {
                Set-PnPUserProfileProperty -Account $UserAccount -PropertyName $SPOPropertyName -Value $ADUserPropertyValue
                Write-host "`tUpdated User Profile Property for: $($User.UserPrincipalName)" -f Green
            }
            Else
            {
                Write-host "`t Existing Value of the Property in SharePoint is Not Null! Skipping..." -f Yellow
            }
        }
        else
        {
            Write-host "`t AD Value of the Property is Null! Skipping..." -f Yellow
        }
        $Counter++
        Write-Progress -Activity "Updating User Profile Data..." -Status "Updating User Profile $Counter of $($AllUsers.Count)" -PercentComplete (($Counter / $AllUsers.Count)  * 100)
    }
}
Catch {
    write-host -f Red "Error Updating User Profile Property!" $_.Exception.Message
}

Asignaciones de propiedades de perfil de usuario predeterminadas en SharePoint Online

Estas son las propiedades del perfil de usuario asignadas y sincronizadas con SharePoint Online desde Azure AD.

AccountName

msonline-UserPrincipalName

ADGuid

Guía de objetos

Department

Departamento

FirstName

Nombre de pila

GroupType

Tipo de grupo

IsPublic

msOnline-IsPublic

IsUnifiedGroup

msonline-groupType

LastName

sn

Manager

Gerente

msOnline-ObjectId

msOnline-ObjetoId

msOnline-ObjectId

msOnline-ObjetoId

Office

Nombre de la oficina de entrega física

PreferredName

Nombre para mostrar

PublicSiteRedirect

WWWPágina de inicio

SPO-IsSPO

SPO-IsSharePointOnlineObject

SPS-ClaimID

msonline-UserPrincipalName

SPS-Department

Departamento

SPS-DistinguishedName

Nombre distinguido

SPS-HideFromAddressLists

msExchHideFromAddressList

SPS-JobTitle

Título

SPS-MUILanguages

Idioma preferido

SPS-RecipientTypeDetails

msExchRecipientTypeDetalles

SPS-SavedSID

ObjetoSid

SPS-SIPAddress

direcciones proxy

SPS-UserPrincipalName

msonline-UserPrincipalName

SPS-UserType

msOnline-Tipo de usuario

Title

Título

UserName

msonline-UserPrincipalName

WorkEmail

direcciones proxy

WorkPhone

número de teléfono

Tenga en cuenta que esta actualización de propiedad es solo para SharePoint Online. No se puede sincronizar con Office 365 o Azure AD. La propiedad de perfil de usuario creada en el centro de administración de SharePoint Online no creará ni sincronizará esa propiedad en Office 365. También tenemos una API para actualizar en masa las propiedades del perfil de usuario. Actualizar en masa las propiedades del perfil de usuario personalizado para SharePoint Online.

Artículos relacionados