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:
Inicie sesión en el centro de administración de Microsoft Exchange
Haga clic en Destinatarios > Grupos
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:
Identificación del grupo
Nombre de visualización del grupo
Tipo de grupo
Nombre de visualización de usuario
Nombre principal de usuario
Alias de usuario
Tipo de usuario
-
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 -ForceInstall-Module Microsoft.Graph.Beta -AllowClobber -ForceImportante: 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 utf8Lí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.ps14. 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.


