Búsqueda de sitios web

SharePoint Online: PowerShell para obtener todos los perfiles de usuario


Requisito: Obtener todos los perfiles de usuario en SharePoint Online mediante PowerShell.

¿Cómo obtener perfiles de usuario en SharePoint Online?

Perfiles de usuario en SharePoint es una ubicación central que almacena información sobre los usuarios, proporciona membresía al sitio y realiza un seguimiento de los datos de uso. Habilita Mis sitios, funciones sociales y perfiles compartidos en varios sitios del inquilino. Para obtener todos los perfiles de usuario en SharePoint Online, haga lo siguiente:

  1. Inicie sesión en el administrador de SharePoint Online >> Haga clic en "Más funciones" en la navegación izquierda >> Haga clic en el botón "Abrir" junto a "Perfiles de usuario".

  2. En la página Perfiles de usuario, haga clic en "Administrar perfiles de usuario" en la pestaña Personas. Utilice la búsqueda para obtener el perfil de usuario del usuario.

Esta página nos ayuda a obtener perfiles de usuario y propiedades individuales uno por uno. Ahora, veamos cómo obtener todos los perfiles de usuario en SharePoint Online usando PowerShell.

SharePoint Online: PowerShell para obtener todos los perfiles de usuario

Obtengamos todos los datos e informes del perfil de usuario en SharePoint Online usando PowerShell. Asegúrese de tener instalado el módulo Azure AD PowerShell antes de ejecutar este script.


#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"
 
#Variables
$AdminSiteUrl = "https://crescent-admin.sharepoint.com"
$CSVPath = "C:\Temp\UserProfiles.csv"

#Get Credentials
$Cred = Get-Credential

#Connect to AzureAD
Connect-AzureAD -Credential $Cred

#Get All Users from AzureAD
$AllUsers = Get-AzureADUser -All:$True
Write-host "Total Number of User Profiles Found:"$AllUsers.Count

#Setup the context
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($AdminSiteURL)
$Ctx.Credentials = $Credentials

#Collect User data
$PeopleManager = New-Object Microsoft.SharePoint.Client.UserProfiles.PeopleManager($Ctx)
$UserDataCollection = @()

$Counter = 1
ForEach($User in $AllUsers)
{
    #Get User Profile
    $UserProfile = $PeopleManager.GetPropertiesFor(('i:0#.f|membership|'+$User.UserPrincipalName))
    $Ctx.Load($UserProfile)
    $Ctx.ExecuteQuery()

    Write-Progress -Activity "Extracting User Profile Data..." -Status "Getting User Profile $Counter of $($AllUsers.Count)" -PercentComplete (($Counter / $AllUsers.Count)  * 100)
    #Get User Profile Data
    $UserData = New-Object PSObject
    ForEach($Key in $UserProfile.UserProfileProperties.Keys)
    {   
        $UserData | Add-Member NoteProperty $Key($UserProfile.UserProfileProperties[$Key])
    }
    $UserDataCollection += $UserData
    $Counter++
}

#Export Data to CSV File
$UserDataCollection | Export-Csv -Path $CSVPath -NoTypeInformation

Este PowerShell obtiene todos los perfiles de usuario y propiedades en SharePoint Online.

Exportar el valor de la propiedad del perfil de usuario de todos los usuarios que utilizan PnP PowerShell

Este script de PowerShell obtiene el valor de la propiedad "Office" de todos los perfiles de usuario mediante el cmdlet Get-PnPUserProfileProperty y lo exporta a un archivo CSV:


#Config Variables
$AdminSiteURL = "https://crescent-admin.sharepoint.com"
$SPOPropertyName = "Office"
$CSVPath = "C:\Temp\UserProfileProperty.csv"

Try {
    #Connect to AzureAD
    Connect-AzureAD
 
    #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 -Interactive
 
    #Iterate through All Users
    $Counter = 1
    $UserProfileData = @()
    ForEach($User in $AllUsers)
    {
        Write-host "`nGetting User Profile Property for: $($User.UserPrincipalName)" -f Yellow
 
        #Get the User Property value from SharePoint   
        $UserProfile = Get-PnPUserProfileProperty -Account ($User.UserPrincipalName)
 
        #Collect the data
        $UserProfileData += New-Object PSObject -Property @{
            'User Account' = $UserProfile.UserProfileProperties["UserName"]
            'Location' = $UserProfile.UserProfileProperties[$SPOPropertyName]
        }

        $Counter++
        Write-Progress -Activity "Getting User Profile Data..." -Status "Getting User Profile $Counter of $($AllUsers.Count)" -PercentComplete (($Counter / $AllUsers.Count)  * 100)
    }
    #Export the data to CSV
     $UserProfileData | Export-Csv $CSVPath -NoTypeInformation
 
     write-host -f Green "User Profiles Data Exported Successfully to:" $CSVPath
}
Catch {
    write-host -f Red "Error Getting User Profile Property!" $_.Exception.Message
}

En resumen, usar un script de PowerShell para recuperar una lista de todos los perfiles de usuario en SharePoint Online es una manera poderosa y eficiente de administrar y organizar la información de los usuarios dentro de una organización. Al usar PowerShell, puede recuperar fácilmente una lista de todos los perfiles de usuario de su inquilino de SharePoint Online. Puede utilizar Microsoft Excel para analizar, ordenar y filtrar más a fondo los datos del perfil de usuario.

Aquí está mi otra publicación para obtener todas las propiedades del perfil de usuario: SharePoint Online: PowerShell para obtener propiedades del perfil de usuario

Artículos relacionados