Búsqueda de sitios web

Exporte miembros del grupo de Microsoft 365 a CSV con PowerShell


Hay muchos grupos en la organización y nos gusta saber qué miembros se agregan a cada grupo. Podemos revisar los grupos manualmente y anotarlos, pero eso llevará mucho tiempo. Otro método es utilizar PowerShell para acelerar el proceso. En este artículo, aprenderá cómo exportar miembros del grupo de Microsoft 365 a CSV con PowerShell.

Tipos de grupos de Microsoft 365

Hay 4 tipos de grupos diferentes en Microsoft 365 y queremos exportar todos estos grupos, incluidos sus miembros.

1. Microsoft 365

Permite a los equipos colaborar proporcionándoles un correo electrónico grupal y un espacio de trabajo compartido para conversaciones, archivos y calendarios. En Outlook, se denominan grupos.

2. Lista de distribución

Crea una dirección de correo electrónico para un grupo de personas.

3. Lista de distribución dinámica

Envía correo electrónico a todos los miembros de la lista. La lista de miembros del grupo se actualiza cada 24 horas, según los filtros y condiciones que establezca.

4. Seguridad habilitada para correo

Envía mensajes a todos los miembros del grupo y brinda acceso a recursos como OneDrive, SharePoint y funciones de administrador.

Buscar grupos de Microsoft 365

Para encontrar todos los grupos en Microsoft 365, siga estos pasos:

  1. Inicie sesión en el centro de administración de Microsoft Exchange

  2. Haga clic en Destinatarios > Grupos

  3. Haga clic en el tipo de grupo para enumerar los grupos.

Veamos el siguiente paso sobre cómo exportar miembros del grupo de Microsoft 365 con PowerShell.

Obtenga miembros del grupo de Microsoft 365 con script de PowerShell

Export-M365GroupMembers.ps1 PowerShell obtendrá todos los tipos de grupos de Microsoft 365, incluidos sus miembros, y los exportará a un archivo CSV.

Para cada grupo de Microsoft 365, recopila la siguiente información:

  1. Identificación del grupo

  2. Nombre de visualización del grupo

  3. Tipo de grupo

  4. Nombre de visualización de usuario

  5. Nombre principal de usuario

  6. Alias de usuario

  7. Tipo de usuario

  8. Cuenta de usuario habilitada

Nota: La secuencia de comandos exportará todos los tipos de grupos de Microsoft 365. Si no hay miembros en un grupo específico, se mostrará como N/A (no aplicable).

1. Instale el módulo Microsoft Graph PowerShell

Antes de que podamos continuar y obtener los miembros del grupo Microsoft 365 de todos los grupos, debemos instalar el módulo Microsoft Graph PowerShell.

Inicie Windows PowerShell como administrador y ejecute los siguientes comandos.

Install-Module Microsoft.Graph -Force
Install-Module Microsoft.Graph.Beta -AllowClobber -Force

Importante: Instale siempre los módulos Microsoft Graph PowerShell y Microsoft Graph Beta PowerShell. Esto se debe a que algunos cmdlets aún no están disponibles en la versión final y no funcionarán. Actualice ambos módulos a la última versión antes de ejecutar un cmdlet o script para evitar errores y resultados incorrectos.

2. Prepare el script de PowerShell para exportar miembros del grupo de Microsoft 365

Cree dos carpetas en la unidad (C:):

  • Temperatura

  • Guiones

Descargue el script de PowerShell Export-M365GroupMembers.ps1 y colóquelo en la carpeta C:\scripts. El script exportará el archivo CSV a la carpeta C:\temp.

Asegúrese de que el archivo esté desbloqueado para evitar errores al ejecutar el script. Lea más en el artículo Error sin firma digital al ejecutar el script de PowerShell.

Otra opción es copiar y pegar el código siguiente en el Bloc de notas. Asígnale el nombre Export-M365GroupMembers.ps1 y colócalo en la carpeta C:\scripts.

<#
    .SYNOPSIS
    Export-M365GroupMembers.ps1

    .DESCRIPTION
    Export Microsoft 365 Group Members to CSV file with PowerShell.

    .LINK
    www.alitajran.com/export-microsoft-365-group-members-to-csv-powershell/

    .NOTES
    Written by: ALI TAJRAN
    Website:    www.alitajran.com
    LinkedIn:   linkedin.com/in/alitajran

    .CHANGELOG
    V1.00, 03/18/2024 - Initial version
#>

# CSV file path to export
$CsvPath = "C:\temp\M365GroupMembers.csv"

# Connect to Microsoft Graph with specified scopes
Connect-MgGraph -Scopes "User.Read.All", "Group.Read.All"

# Retrieve all groups
$groups = Get-MgGroup -All

# Get properties
$Properties = @(
    'Id', 'DisplayName', 'UserPrincipalName', 'UserType', 'AccountEnabled'
)

# Initialize an array to store user information
$allUsers = @()

# Set up the progress bar parameters
$totalGroups = $groups.Count
$currentGroup = 0

# Iterate through each group and retrieve group members
foreach ($group in $groups) {
    # Retrieve group members using the valid Group ID
    $members = Get-MgGroupMember -GroupId $group.id -All

    # Determine the group type
    $groupType = if ($group.groupTypes -eq "Unified" -and $group.securityEnabled) { "Microsoft 365 (security-enabled)" }
    elseif ($group.groupTypes -eq "Unified" -and !$group.securityEnabled) { "Microsoft 365" }
    elseif (!($group.groupTypes -eq "Unified") -and $group.securityEnabled -and $group.mailEnabled) { "Mail-enabled security" }
    elseif (!($group.groupTypes -eq "Unified") -and $group.securityEnabled) { "Security" }
    elseif (!($group.groupTypes -eq "Unified") -and $group.mailEnabled) { "Distribution" }
    else { "N/A" }

    # If there are no members, create an object with empty values
    if ($members.Count -eq 0) {
        $Objects = [PSCustomObject][ordered]@{
            GroupId            = $group.Id
            GroupDisplayName   = $group.DisplayName
            GroupType          = $groupType
            UserDisplayName    = "N/A"
            UserPrincipalName  = "N/A"
            UserAlias          = "N/A"
            UserType           = "N/A"
            UserAccountEnabled = "N/A"
        }
        $allUsers += $Objects
    }
    else {
        # Iterate through each group member and retrieve user details
        foreach ($member in $members) {
            $user = Get-MgUser -UserId $member.Id -Property $Properties -ErrorAction SilentlyContinue | Select-Object $Properties

            # Check if $user is not null before accessing properties
            if ($user.Count -ne 0) {
                # Extract the alias from the UserPrincipalName
                $alias = $user.UserPrincipalName.Split("@")[0]

                # Create an ordered custom object with properties in a specific order
                $Objects = [PSCustomObject][ordered]@{
                    GroupId            = $group.Id
                    GroupDisplayName   = $group.DisplayName
                    GroupType          = $groupType
                    UserDisplayName    = $user.DisplayName
                    UserPrincipalName  = $user.UserPrincipalName
                    UserAlias          = $alias
                    UserType           = $user.UserType
                    UserAccountEnabled = $user.AccountEnabled
                }

                # Add the ordered custom object to the array
                $allUsers += $Objects
            }
        }
    }

    # Update the progress bar
    $currentGroup++
    $status = "{0:N0}" -f ($currentGroup / $totalGroups * 100)

    $progressParams = @{
        Activity        = "Retrieving Group Members"
        Status          = "Processing group: $($group.DisplayName) - $currentGroup of $totalGroups : $status% completed"
        PercentComplete = ($currentGroup / $totalGroups) * 100
    }

    Write-Progress @progressParams
}

# Complete the progress bar
Write-Progress -Activity "Retrieving Group Members" -Completed

# Export all user information to a CSV file
$allUsers | Sort-Object GroupDisplayName | Export-Csv $CsvPath -NoTypeInformation -Encoding utf8
  • Línea 21: Editar la ruta del archivo CSV

3. Ejecute el script de PowerShell Exportar miembros del grupo de Microsoft 365.

Obtenga todos los grupos de Microsoft 365, incluidos sus miembros, y expórtelos a un archivo CSV.

Ejecute el siguiente comando para ejecutar el script Export-M365GroupMembers.ps1.

c:\scripts\.\Export-M365GroupMembers.ps1

4. Abra el informe de miembros del grupo de Microsoft 365.

El script de PowerShell Export-M365GroupMembers.ps1 exporta todos los miembros del grupo de Microsoft 365 a un archivo CSV.

Busque el archivo M365GroupMembers.csv en la ruta C:\temp.

Abra el archivo CSV con su aplicación favorita. En nuestro ejemplo, es Microsoft Excel.

El informe de los miembros del grupo de Microsoft 365 parece fantástico.

Leer más: Exportar informe de usuarios discapacitados de Microsoft 365 »

Conclusión

Aprendió a exportar miembros del grupo de Microsoft 365 a CSV con PowerShell. Si bien puede exportar los grupos desde el centro de administración, no obtiene los miembros del grupo. Debe usar PowerShell para crear un informe de grupo de Microsoft 365 personalizado.

Disfrutaste este artículo? También te puede interesar Bloquear el inicio de sesión desde buzones de correo compartidos. No olvides seguirnos y compartir este artículo.

Artículos relacionados