Publicado en

Cómo obtener los miembros de un grupo de Microsoft 365 usando PowerShell (Graph)

Obtener miembros de grupo en Microsoft 365 con PowerShell Graph – Guía paso a paso

En esta guía aprenderás a obtener miembros de grupo en Microsoft 365 usando PowerShell y Microsoft Graph, y a exportarlos a CSV para auditorías y reportes.

Introducción

Si administras Microsoft 365, tarde o temprano necesitarás listar los miembros de un grupo (grupos de Microsoft 365, seguridad o equipos de Microsoft Teams). Usar PowerShell con Microsoft Graph te permite automatizar el proceso y mantener reportes consistentes, repetibles y fáciles de integrar en tu flujo de IT.

Resumen: conecta Microsoft Graph, usa Get-MgGroupMember para obtener los miembros del grupo en Microsoft 365, resuelve solo usuarios con Get-MgUser y exporta a CSV con Export-Csv.

Requisitos previos

  1. PowerShell 7.x o Windows PowerShell 5.1.
  2. Instalar el módulo Microsoft.Graph:
    Install-Module Microsoft.Graph -Scope CurrentUser
  3. Iniciar sesión con permisos mínimos User.Read.All y Group.Read.All:
    Connect-MgGraph -Scopes "User.Read.All","Group.Read.All"
  4. Contar con el ObjectId del grupo (GroupId). Desde Entra ID → Grupos o con:
    Get-MgGroup -Filter "displayName eq 'NOMBRE_DEL_GRUPO'"

Cómo usar PowerShell y Graph para obtener miembros de grupo en Microsoft 365

El flujo general es:

  1. Conectarte a Graph con los scopes adecuados.
  2. Usar Get-MgGroupMember para traer todos los miembros asociados al GroupId.
  3. Resolver y filtrar solo objetos User con Get-MgUser.
  4. Proyectar los campos que necesitas y exportar a CSV.

Script completo: obtener miembros de grupo en Microsoft 365 con PowerShell Graph

# Define el ID del grupo
$GroupId = "d8da40dd-af8d-h38fh4f0-8a48-9ea15dddj49g85h6f"

# Inicializa lista
$usuarios = @()

# Obtiene miembros del grupo (IDs)
$miembros = Get-MgGroupMember -GroupId $GroupId -All

# Recorre cada miembro y obtiene su información solo si es usuario
foreach ($miembro in $miembros) {
    # Obtiene el tipo real del objeto (puede ser user, group, etc.)
    $user = Get-MgUser -UserId $miembro.Id -ErrorAction SilentlyContinue
    if ($user) {
        $usuarios += [PSCustomObject]@{
            Nombre          = $user.DisplayName
            Correo          = $user.UserPrincipalName
            Id              = $user.Id
            Cargo           = $user.JobTitle
            Departamento    = $user.Department
        }
    }
}

# Exporta a CSV (ajusta la ruta)
$usuarios | Export-Csv -Path "C:\Temp\miembros_$(get-date -f yyyy-MM-dd-hh-mm).csv" -NoTypeInformation -Encoding UTF8
Write-Host "Exportados $($usuarios.Count) usuarios a CSV." -ForegroundColor Green

Sugerencia: usa rutas relativas o una carpeta de reportes específica para compartir resultados con tu equipo.

Explicación rápida de los cmdlets

  • Get-MgGroupMember: extrae miembros del grupo en Microsoft 365 (usuarios, grupos, etc.).
  • Get-MgUser: consulta atributos solo de objetos tipo User.
  • [PSCustomObject]: arma un objeto plano con las columnas que exportarás.
  • Export-Csv: genera un archivo .csv listo para análisis.

Variaciones útiles

Exportar directamente a Excel (requiere módulo ImportExcel)

# Install-Module ImportExcel -Scope CurrentUser
$usuarios | Export-Excel -Path ".\MiembrosGrupo.xlsx" -AutoSize

Filtrar solo usuarios de un dominio específico

$usuarios | Where-Object { $_.Correo -like "*@tu-dominio.com" } | Export-Csv ".\Miembros_TuDominio.csv" -NoTypeInformation -Encoding UTF8

Verificación y mejores prácticas

  • Valida permisos efectivos para leer el grupo en Microsoft 365.
  • En entornos con consentimiento, los scopes pueden requerir aprobación de administrador.
  • En producción, añade try { } catch { } y logs para diagnósticos.
  • Programa la ejecución con Task Scheduler para reportes recurrentes.

Preguntas frecuentes (FAQ)

¿Funciona con equipos de Microsoft Teams?

Sí. Microsoft Teams usa grupos de Microsoft 365, por lo que el script devuelve sus miembros.

¿Qué permisos mínimos necesito?

User.Read.All y Group.Read.All. En algunos tenants, el consentimiento de administrador es obligatorio.

¿Puedo agregar más columnas como teléfono o ciudad?

Sí. Añade propiedades del objeto $user (por ejemplo: $user.City, $user.MobilePhone) si están disponibles en tu directorio.

Referencias

Conclusión

Con PowerShell y Microsoft Graph puedes obtener miembros de grupo en Microsoft 365 y exportarlos de forma confiable. Adáptalo a tus políticas de seguridad, automatiza la tarea y mantén reportes consistentes para tus auditorías.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Tiempo excedido. Por favor completa el captcha nuevamente

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.