SharePoint Online: obtener propiedades de perfil de usuario mediante PowerShell
Requisito: SharePoint Online Obtenga todos los perfiles de usuario y expórtelos a CSV.
¿Cómo obtener propiedades de perfil de usuario en SharePoint Online?
En esta publicación de blog, veremos cómo obtener propiedades de perfil de usuario en SharePoint Online. Veremos cómo usar PowerShell para SharePoint Online, recuperar las propiedades de un perfil de usuario y luego usar el centro de administración de SharePoint para obtener las propiedades del perfil de un usuario específico. También veremos algunos scripts de ejemplo que recuperan una propiedad particular o todas las propiedades de un perfil de usuario determinado.
Una propiedad de perfil de usuario es un campo que contiene datos de usuario como "Nombre", "Apellido", "Departamento", "Habilidades", etc. De forma predeterminada, SharePoint ya tiene un amplio conjunto de propiedades de perfil de usuario. Para obtener todos los perfiles de usuario y las propiedades de los perfiles de usuario en SharePoint Online, siga estos pasos:
- Inicie sesión en el Centro de administración de SharePoint Online >> Haga clic en el enlace "Más funciones" en la navegación izquierda >> Haga clic en el botón "Abrir" debajo de "Perfiles de usuario".
En Perfiles de usuario, haga clic en el enlace "Administrar perfiles de usuario" en la pestaña Personas.
-
Utilice la búsqueda para obtener el perfil de usuario del usuario >> Elija "Editar mi perfil" en el menú contextual.
Esta interfaz nos ayuda a obtener perfiles de usuario y propiedades individuales uno por uno. Ahora, veamos cómo obtener propiedades de perfil de usuario en SharePoint Online usando PowerShell.
SharePoint Online PowerShell para obtener propiedades de perfil de usuario
Aquí está el PowerShell para obtener todos los perfiles de usuario en SharePoint Online. Obtiene la propiedad específica "Departamento" del usuario particular de la colección de sitios determinada.
#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 Get-SPOUserProfileProperty()
{
param
(
[Parameter(Mandatory=$true)] [string] $AdminSiteURL,
[Parameter(Mandatory=$true)] [string] $UserAccount,
[Parameter(Mandatory=$true)] [string] $Property
)
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($AdminSiteURL)
$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)
$UserProfile = $PeopleManager.GetPropertiesFor($User.LoginName)
$Ctx.Load($UserProfile)
$Ctx.ExecuteQuery()
#Get the User Profile Property
Write-host $UserProfile.UserProfileProperties[$Property]
}
Catch {
write-host -f Red "Error Getting User Profile Properties!" $_.Exception.Message
}
}
#Call the function
$AdminSiteURL="https://crescent-admin.sharepoint.com"
$UserAccount="Kacper@crescent.com"
$Property="Department"
Get-SPOUserProfileProperty -AdminSiteURL $AdminSiteURL -UserAccount $UserAccount -Property $Property
Este PowerShell obtiene la propiedad particular de un usuario específico. De manera similar, puede obtener cualquier propiedad de usuario disponible, como Correo electrónico, Administrador, etc., desde el perfil de usuario de SharePoint Online mediante PowerShell.
SharePoint Online: obtener propiedades de perfil de usuario mediante PowerShell
También puede obtener propiedades de perfil de usuario utilizando el servicio web de perfil de usuario. Aquí es cómo:
#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"
#variables
$AdminCenterURL = "https://Crescent-admin.sharepoint.com"
$SiteURL="https://Crescent.sharepoint.com/"
#Setup Credentials to connect
$Cred= Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
#Authenticate the web service
$UserProfileService= New-WebServiceProxy -Uri ("$AdminCenterURL/_vti_bin/UserProfileService.asmx?wsdl") -UseDefaultCredential False
$UserProfileService.Credentials = $Credentials
$URI = New-Object System.Uri($AdminCenterURL)
$Container = New-Object System.Net.CookieContainer
$Container.SetCookies($URI, $Credentials.GetAuthenticationCookie($AdminCenterURL))
$UserProfileService.CookieContainer = $Container
#Sets the first User profile, at index -1
$UserProfileResult = $UserProfileService.GetUserProfileByIndex(-1)
#To Get All Properties available: $UserProfileResult.UserProfile| Select name
#Loop through all user profiles
While ($UserProfileResult.NextValue -ne -1)
{
#Get the user UPN property
$Property = $UserProfileResult.UserProfile | Where-Object { $_.Name -eq "SPS-UserPrincipalName"}
Write-host $Property.Values[0].Value
#Get Account Name
$Property = $UserProfileResult.UserProfile | Where-Object { $_.Name -eq "AccountName"}
Write-host $Property.Values[0].Value
#Get the next profile
$UserProfileResult = $UserProfileService.GetUserProfileByIndex($UserProfileResult.NextValue)
}
PnP PowerShell para obtener propiedades de perfil de usuario en SharePoint Online
A continuación se explica cómo obtener todas las propiedades del perfil de usuario en SharePoint Online utilizando el cmdlet PnP PowerShell Get-PnPUserProfileProperty:
#Set Variables
$SiteURL = "https://crescent.sharepoint.com"
$UserAccount = "Salaudeen@crescent.com"
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive
#Get all properties of a User Profile
$UserProfile = Get-PnPUserProfileProperty -Account $UserAccount
$UserProfile.UserProfileProperties
Este script recupera todas las propiedades de un perfil de usuario.
| Property Name |
|---|
| UserProfile_GUID |
| SID |
| ADGuid |
| AccountName |
| FirstName |
| SPS-PhoneticFirstName |
| LastName |
| SPS-PhoneticLastName |
| PreferredName |
| SPS-PhoneticDisplayName |
| WorkPhone |
| Department |
| Title |
| SPS-Department |
| Manager |
| AboutMe |
| PersonalSpace |
| PictureURL |
| UserName |
| QuickLinks |
| WebSite |
| PublicSiteRedirect |
| SPS-JobTitle |
| SPS-DataSource |
| SPS-MemberOf |
| SPS-Dotted-line |
| SPS-Peers |
| SPS-Responsibility |
| SPS-SipAddress |
| SPS-MySiteUpgrade |
| SPS-DontSuggestList |
| SPS-ProxyAddresses |
| SPS-HireDate |
| SPS-DisplayOrder |
| SPS-ClaimID |
| SPS-ClaimProviderID |
| SPS-LastColleagueAdded |
| SPS-OWAUrl |
| SPS-ResourceSID |
| SPS-ResourceAccountName |
| SPS-MasterAccountName |
| SPS-UserPrincipalName |
| SPS-O15FirstRunExperience |
| SPS-PersonalSiteInstantiationState |
| SPS-DistinguishedName |
| SPS-SourceObjectDN |
| SPS-LastKeywordAdded |
| SPS-ClaimProviderType |
| SPS-SavedAccountName |
| SPS-SavedSID |
| SPS-ObjectExists |
| SPS-PersonalSiteCapabilities |
| SPS-PersonalSiteFirstCreationTime |
| SPS-PersonalSiteLastCreationTime |
| SPS-PersonalSiteNumberOfRetries |
| SPS-PersonalSiteFirstCreationError |
| SPS-FeedIdentifier |
| WorkEmail |
| CellPhone |
| Fax |
| HomePhone |
| Office |
| SPS-Location |
| Assistant |
| SPS-PastProjects |
| SPS-Skills |
| SPS-School |
| SPS-Birthday |
| SPS-StatusNotes |
| SPS-Interests |
| SPS-HashTags |
| SPS-EmailOptin |
| SPS-PrivacyPeople |
| SPS-PrivacyActivity |
| SPS-PictureTimestamp |
| SPS-PicturePlaceholderState |
| SPS-PictureExchangeSyncState |
| SPS-MUILanguages |
| SPS-ContentLanguages |
| SPS-TimeZone |
| SPS-RegionalSettings-FollowWeb |
| SPS-Locale |
| SPS-CalendarType |
| SPS-AltCalendarType |
| SPS-AdjustHijriDays |
| SPS-ShowWeeks |
| SPS-WorkDays |
| SPS-WorkDayStartHour |
| SPS-WorkDayEndHour |
| SPS-Time24 |
| SPS-FirstDayOfWeek |
| SPS-FirstWeekOfYear |
| SPS-RegionalSettings-Initialized |
| OfficeGraphEnabled |
| SPS-UserType |
| SPS-HideFromAddressLists |
| SPS-RecipientTypeDetails |
| DelveFlags |
| VideoUserPopup |
| PulseMRUPeople |
| msOnline-ObjectId |
| SPS-PointPublishingUrl |
| SPS-TenantInstanceId |
| SPS-SharePointHomeExperienceState |
| SPS-RefreshToken |
| SPS-MultiGeoFlags |
| PreferredDataLocation |
| Country |
Puede consultar una propiedad específica como:
Write-host $UserProfile.UserProfileProperties["Department"]
Si necesita obtener todas las propiedades de todos los perfiles de usuario y exportarlas a un archivo CSV, aquí hay otra publicación: Exportar todas las propiedades del perfil de usuario en SharePoint Online usando PowerShell

