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:
- Si la propiedad del perfil de usuario de AD tiene algún valor (¡no nulo!)
- ¡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.
