Búsqueda de sitios web

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:

  1. 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".
  2. En Perfiles de usuario, haga clic en el enlace "Administrar perfiles de usuario" en la pestaña Personas.

  3. 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.

Para obtener todas las propiedades disponibles del servicio de perfil de usuario, utilice: $UserProfile.UserProfileProperties.Keys

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

Artículos relacionados