SharePoint Online: actualizar las propiedades del perfil de usuario mediante PowerShell
Requisito: Actualizar la propiedad del perfil de usuario en SharePoint Online mediante PowerShell.
¿Cómo actualizar perfiles de usuario en SharePoint Online?
Como administrador de un entorno de SharePoint Online, es posible que deba actualizar las propiedades del perfil de usuario de vez en cuando. En esta publicación de blog, recorreremos los pasos necesarios para actualizar las propiedades del perfil de usuario mediante SharePoint Admin Center y PowerShell.
Para actualizar las propiedades del perfil de usuario de SharePoint Online, siga estos pasos:
- Inicie sesión en el Centro de administración de SharePoint Online >> Haga clic en el enlace "Perfiles de usuario" en la navegación de la izquierda.
- Haga clic en "Administrar perfiles de usuario" en la pestaña Personas en Perfiles de usuario. Utilice la búsqueda para encontrar el perfil de usuario que desea actualizar >> Haga clic en el enlace "Editar mi perfil" en el menú contextual desplegable del resultado del usuario.
Actualice cualquier propiedad de perfil de usuario permitida y haga clic en el botón "Guardar y cerrar".
Si bien los pasos anteriores son bastante simples y directos, es posible que no sean los mejores si desea actualizar las propiedades de varios perfiles de usuario. Afortunadamente, PowerShell puede ayudarte a cambiar estas propiedades con facilidad.
SharePoint Online: actualizar el perfil de usuario mediante PowerShell
Actualicemos el campo "Departamento" del perfil de usuario de SharePoint. Aquí está PowerShell para SharePoint Online para configurar las propiedades del perfil de usuario.
#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 Update-UserProfileProperty()
{
param
(
[Parameter(Mandatory=$true)] [string] $AdminCenterURL,
[Parameter(Mandatory=$true)] [string] $UserAccount,
[Parameter(Mandatory=$true)] [string] $PropertyName,
[Parameter(Mandatory=$true)] [string] $PropertyValue
)
Try {
#Setup Credentials to connect
$Cred= Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($AdminCenterURL)
$Ctx.Credentials = $Credentials
#Get the User
$User = $Ctx.web.EnsureUser($UserAccount)
$Ctx.Load($User)
$Ctx.ExecuteQuery()
#Get User Profile
$PeopleManager = New-Object Microsoft.SharePoint.Client.UserProfiles.PeopleManager($Ctx)
#update User Profile Property
$PeopleManager.SetSingleValueProfileProperty($User.LoginName, $PropertyName, $PropertyValue)
$Ctx.ExecuteQuery()
Write-host "User Profile Property has been Updated!" -f Green
}
Catch {
write-host -f Red "Error Updating User Profile Property!" $_.Exception.Message
}
}
#Define Parameter values
$AdminCenterURL="https://crescent-admin.sharepoint.com"
$UserAccount="i:0#.f|membership|Zahia@Crescent.com"
$PropertyName="Department"
$PropertyValue="Operations - IT"
#Call the function
Update-UserProfileProperty -AdminCenterURL $AdminCenterURL -UserAccount $UserAccount -PropertyName $PropertyName -PropertyValue $PropertyValue
El script anterior muestra cómo actualizar la propiedad "departamento" del perfil de usuario en SharePoint Online usando PowerShell.
Establecer propiedad de perfil de usuario para todos los usuarios que utilizan PowerShell
Actualicemos las propiedades de todos los perfiles de usuario esta vez:
#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"
#Config parameters
$AdminSiteUrl = "https://crescent-admin.sharepoint.com"
$PropertyName = "Fax"
$PropertyValue = "+971-043322001"
#Get Credentials
$Cred = Get-Credential
Try {
#Connect to AzureAD
Connect-AzureAD -Credential $Cred
#Get All Users from AzureAD Domain - Exclude Guests
$AllUsers = Get-AzureADUser -All:$True -Filter "UserType eq 'Member'"
Write-host "Total Number of User Profiles Found:"$AllUsers.Count
#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)
$Counter = 1
ForEach($User in $AllUsers)
{
#update User Profile Property
$UserAccount = "i:0#.f|membership|$($User.UserPrincipalName)"
$PeopleManager.SetSingleValueProfileProperty($UserAccount, $PropertyName, $PropertyValue)
$Ctx.ExecuteQuery()
Write-host "User Profile Property has been Updated for: $($User.UserPrincipalName)" -f Green
$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
}
Actualizar las propiedades del perfil de usuario de SharePoint Online mediante PowerShell
Hay campos con valores múltiples en el perfil de Personas. P.ej. ¡Habilidades! Actualicemos los campos de valores múltiples en los perfiles de usuario de SharePoint Online.
#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 Update-MultiUserProfileProperty()
{
param
(
[Parameter(Mandatory=$true)] [string] $AdminCenterURL,
[Parameter(Mandatory=$true)] [string] $UserAccount,
[Parameter(Mandatory=$true)] [string] $PropertyName,
[Parameter(Mandatory=$true)] [System.Collections.Generic.List``1[System.string]] $PropertyValues
)
Try {
#Setup Credentials to connect
$Cred= Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($AdminCenterURL)
$Ctx.Credentials = $Credentials
#Get the User
$User = $Ctx.web.EnsureUser($UserAccount)
$Ctx.Load($User)
$Ctx.ExecuteQuery()
#Get User Profile
$PeopleManager = New-Object Microsoft.SharePoint.Client.UserProfiles.PeopleManager($Ctx)
$PropertyValues
#update User Profile Property
$PeopleManager.SetMultiValuedProfileProperty($User.LoginName, $PropertyName, $PropertyValues)
$Ctx.ExecuteQuery()
Write-host "User Profile Property has been Updated!" -f Green
}
Catch {
write-host -f Red "Error Updating User Profile Property!" $_.Exception.Message
}
}
#Define Parameter values
$AdminCenterURL="https://crescent-admin.sharepoint.com"
$UserAccount="i:0#.f|membership|SPAdmin@crescent.com"
$PropertyName="SPS-Skills"
$PropertyValues = New-Object "System.Collections.Generic.List``1[System.string]"
$PropertyValues.Add("SharePoint")
$PropertyValues.Add("PowerShell")
$PropertyValues.Add("C#")
#Call the function
Update-MultiUserProfileProperty -AdminCenterURL $AdminCenterURL -UserAccount $UserAccount -PropertyName $PropertyName -PropertyValues $PropertyValues
En otro caso, cuando tuve que actualizar las preferencias de idioma del perfil de usuario en SharePoint Online, especifiqué "SPS-MUILanguages" como nombre de propiedad y "en-US,en-GB,de-DE" como opciones.
SharePoint Online: PnP PowerShell para establecer la propiedad del perfil de usuario
A continuación se explica cómo actualizar las propiedades del perfil de usuario de SharePoint Online utilizando el cmdlet PnP PowerShell Set-PnPUserProfileProperty:
#Config Variables
$AdminSiteURL = "https://Crescent-admin.sharepoint.com"
$UserAccount= "Peter@Crescent.com"
#Connect to PnP Online
Connect-PnPOnline -Url $AdminSiteURL -Interactive
#sharepoint online powershell update user profile property
Set-PnPUserProfileProperty -Account $UserAccount -PropertyName "Department" -Value "Operations - IT"
De manera similar, puede actualizar las propiedades del perfil de usuario con valores múltiples usando PowerShell.
Set-PnPUserProfileProperty -Account $UserAccount -PropertyName "SPS-Skills" -Values "SharePoint", "PowerShell"
Si desea sincronizar una propiedad de perfil de usuario desde Azure AD, use SharePoint Online: Sincronizar propiedad de perfil de usuario desde Azure AD mediante PowerShell
