PowerShell to get values from Azure AD and set them in SharePoint user profiles. Here I am getting all users that are licensed and setting their mobile numbers. This has been run in a production environment and works well.
Import-Module MSOnline Clear-Host # add SharePoint CSOM libraries Import-Module 'C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll' Import-Module 'C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll' Import-Module 'C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.UserProfiles.dll' # Defaults $spoAdminUrl = "https://TENANT-admin.sharepoint.com" $overwriteExistingSPOUPAValue = "True" # Get credentials of account that is AzureAD Admin and SharePoint Online Admin $userName = "ADMINEMAIL" $password = ConvertTo-SecureString "PASSWORD" -AsPlainText -Force $credential = New-Object -TypeName System.Management.Automation.PSCredential -argumentlist $userName, $password Try { # Connect to AzureAD Connect-MsolService -Credential $credential # Get credentials for SharePointOnline $spoCredentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($credential.GetNetworkCredential().Username, (ConvertTo-SecureString $credential.GetNetworkCredential().Password -AsPlainText -Force)) $ctx = New-Object Microsoft.SharePoint.Client.ClientContext($spoAdminUrl) $ctx.Credentials = $spoCredentials $spoPeopleManager = New-Object Microsoft.SharePoint.Client.UserProfiles.PeopleManager($ctx) # Get all AzureAD Users $AzureADUsers = Get-MsolUser | Where-Object { $_.isLicensed -eq "TRUE" } ForEach($AzureADUser in $AzureADUsers){ $mobilePhone = $AzureADUser.MobilePhone $targetUPN = $AzureADUser.UserPrincipalName.ToString() $targetSPOUserAccount = ("i:0#.f|membership|" + $targetUPN) # Check to see if the AzureAD User has a MobilePhone specified if (!([string]::IsNullOrEmpty($mobilePhone))) { $targetspoUserAccount = ("i:0#.f|membership|" + $AzureADUser.UserPrincipalName.ToString()) $spoPeopleManager.SetSingleValueProfileProperty($targetspoUserAccount, "CellPhone", $mobilePhone) Try { $ctx.ExecuteQuery() Write-Output "User: $targetUPN has had their mobile number set to: $mobilePhone" } Catch { [Exception] Write-Output "User: $targetUPN with mobile: $mobilePhone, failed to be set, see exception below" Write-Output $_.Exception.Message } } else { # AzureAD User MobilePhone is empty, nothing to do here Write-Output "AzureAD MobilePhone Property is Null or Empty for $targetUPN)" } } } Catch { [Exception] Write-Output $_.Exception.Message }