Búsqueda de sitios web

Exportar grupo de distribución y miembros con PowerShell


Puede exportar la información del grupo de distribución desde el centro de administración de Microsoft 365, pero no muestra todos los detalles. Con PowerShell, es más rápido exportar datos detallados de grupos de distribución a un archivo CSV. En este artículo, aprenderá cómo exportar un grupo de distribución y miembros con PowerShell.

Conéctese a Exchange en línea

Para poder ejecutar comandos de PowerShell, debe conectarse a Exchange Online PowerShell. Abra Windows PowerShell como administrador, ejecute el cmdlet siguiente e inicie sesión con sus credenciales de administrador.

Connect-ExchangeOnline

Ver la lista y los miembros del grupo de distribución

Mostraremos cómo mostrar información sobre grupos de distribución en la salida de PowerShell. Recuerda que toda la información que puedas mostrar en la consola de PowerShell también la podrás exportar a un archivo CSV.

Mostrar lista de grupos de distribución

Obtengamos una lista de todos los grupos de distribución (de seguridad) existentes con información. Para ver grupos de distribución existentes o grupos de seguridad habilitados para correo, use el cmdlet Get-DistributionGroup.

Get-DistributionGroup -ResultSize Unlimited

El ejemplo de salida de PowerShell:

Name            DisplayName         GroupType PrimarySmtpAddress               
----            -----------         --------- ------------------               
Sales Employees Sales Employees     Universal Sales.Employees@m365info.com     
Sales UK        Sales UK            Universal SalesUK@m365info.com
Sales USA       Sales USA mail list Universal SalesUSAnew@m365info.com

Mostrar miembros del grupo de distribución

Puede mostrar los miembros de todos los grupos de distribución existentes.

Consulte la siguiente sintaxis del comando PowerShell.

Get-DistributionGroupMember -ResultSize Unlimited "Distribution Group"

Ejecute el siguiente ejemplo de comando de PowerShell.

Get-DistributionGroupMember -ResultSize Unlimited "SalesUK@m365info.com"

La salida de PowerShell muestra la identidad de los miembros.

Name                                 RecipientType
----                                 -------------
41377e9c-dc47-46c0-b4a5-1d5bbdcb5cc5 UserMailbox  

Mostrar detalles de los miembros del grupo de distribución

Para obtener información ampliada sobre los miembros de un grupo de distribución específico, debemos utilizar el cmdlet de PowerShell Get-DistributionGroupMember. Ordenaremos el resultado y mostraremos la siguiente información sobre los miembros DisplayName, Alias y Departamento.

Ejemplo de comando de PowerShell:

Get-DistributionGroupMember -ResultSize Unlimited "SalesUSA@m365info.com" | Sort -Property DisplayName | Select-Object DisplayName, Alias, Department

Resultados de salida de PowerShell:

DisplayName  Alias        Department
-----------  -----        ----------
Brenda Smith Brenda.Smith           
David Kent   David.Kent   Sales     

Cuente el número de miembros del grupo de distribución.

También puede ver la cantidad de miembros que tiene un grupo de distribución específico.

Consulte la siguiente sintaxis del comando de PowerShell.

(Get-DistributionGroupMember -ResultSize Unlimited "Distribution Group").Count

Ejecute el siguiente ejemplo de comando de PowerShell.

(Get-DistributionGroupMember -ResultSize Unlimited "SalesUSA@m365info.com").Count

Mostrará la cantidad de miembros en la salida de PowerShell.

Obtener membresía en el grupo de distribución de un usuario específico

También puede averiguar cuántas membresías tiene un usuario específico.

  1. Escriba la Identidad del usuario en la primera línea.
  2. Ejecute el siguiente script de PowerShell
$User = "Brenda.Smith@m365info.com"
$UserDisplayName = (Get-User $User).Name
"The user " + $User + " is a member of the following Distribution Groups:"

foreach ($DistributionGroup in Get-DistributionGroup -ResultSize Unlimited) {
    if ((Get-DistributionGroupMember $DistributionGroup.PrimarySmtpAddress | Select-Object -ExpandProperty Name) -contains $UserDisplayName) {
        $DistributionGroup.PrimarySmtpAddress
    }
}

El resultado de salida de PowerShell muestra a qué grupos de distribución son miembros.

The User Brenda.Smith@m365info.com is a member of the following Distribution Groups:
SalesEmployees@m365info.com
SalesUSA@m365info.com

En nuestro ejemplo, el usuario Brenda es miembro de dos grupos de distribución.

Mostrar lista de grupos de distribución con dominio de correo electrónico específico

Ver una lista de grupos de distribución de un dominio específico. Esto es útil si tiene muchos grupos de distribución y desea limitarlos a un dominio específico.

Consulte la sintaxis del comando de PowerShell.

Get-DistributionGroup -ResultSize Unlimited  -Filter {EmailAddresses -like "*Domain Name"} | ft -Property Name, Alias, EmailAddresses -Autosize

En nuestro ejemplo, queremos mostrar una lista de grupos de distribución cuya dirección de correo electrónico incluye el nombre de dominio m365info.com

Ejecute el ejemplo del comando PowerShell.

Get-DistributionGroup -ResultSize Unlimited  -Filter {EmailAddresses -like "*m365info.com*"} | ft -Property Name, Alias, EmailAddresses -Autosize

La salida de PowerShell muestra el siguiente resultado.

Name            Alias           EmailAddresses                                                                                      
----            -----           --------------                                                                                      
Sales Employees Sales.Employees {SMTP:Sales.Employees@m365info.com, smtp:Sales.Employees@ms365info.onmicrosoft.com}                 
Sales UK        SalesUK         {SMTP:SalesUK03@m365info.com, smtp:SalesUK@ms365info.onmicrosoft.com}                               
Sales USA       SalesUSA        {SMTP:SalesUSAnew@m365info.com, smtp:SalesUSA@m365info.com, smtp:SalesUSA@ms365info.onmicrosoft.com}

Mostrar grupos de distribución en un rango de fechas específico

Puede obtener una lista de grupos de distribución creados en una fecha, hora o rango de tiempo específico.

  1. Queremos agregar un usuario a todos los grupos de distribución nuevos creados en un rango de tiempo específico (últimas dos semanas)
  2. Queremos agregar un usuario a todos los grupos de distribución creados en un rango de tiempo específico (antes de las últimas dos semanas)

Para saber cuándo se creó un grupo de distribución específico, podemos consultar WhenCreated. Para encontrar el grupo de distribución que pertenece al rango de tiempo específico, como las últimas dos semanas o el tiempo anterior a las dos semanas actuales, necesitamos usar los operadores lógicos de PowerShell.

En nuestro ejemplo, creamos dos consultas de PowerShell que utilizarán los siguientes operadores -ge y -le y obtendremos la siguiente información:

  • Obtenga una lista de grupos de distribución creados en las últimas 2 semanas. Para ello utilizamos el operador de PowerShell -ge (mayor o igual que).
  • Obtenga una lista de grupos de distribución creados antes de las últimas 2 semanas. Para ello utilizamos el operador de PowerShell -le (Menor o igual a).

Para definir el rango de tiempo de dos semanas, usaremos los cmdlets de PowerShell Get-Date de la siguiente manera: (Get-Date).AddDays(-14).

Obtener grupos de distribución creados en las últimas 2 semanas

Obtenga una lista de grupos de distribución creados en los últimos 14 días.

Ejecute el siguiente ejemplo de PowerShell.

Get-DistributionGroup -ResultSize Unlimited -Filter "WhenCreated -ge '$((Get-Date).AddDays(-14))'" | Format-Table DisplayName, WhenCreated

Vea el resultado de salida de PowerShell.

DisplayName         WhenCreated        
-----------         -----------        
Sales Employees     25/08/2023 23.07.36
Sales UK            07/09/2023 11.53.47
Sales USA mail list 07/09/2023 10.00.12

Obtener grupos de distribución creados antes de las últimas 2 semanas

Obtenga una lista de grupos de distribución creados antes de los últimos 14 días.

Ejecute el siguiente ejemplo de comando de PowerShell.

Get-DistributionGroup -ResultSize Unlimited -Filter "WhenCreated -le '$((Get-Date).AddDays(-14))'" | Format-Table DisplayName, WhenCreated

El resultado de salida de PowerShell muestra una lista de todos los grupos de distribución creados antes de las últimas dos semanas.

DisplayName     WhenCreated        
-----------     -----------        
Sales Employees 25/08/2023 23.07.36

Mostrar todos los grupos de distribución administrados por un propietario específico

Obtenga una lista de todos los grupos de distribución administrados por un nombre específico. Vea solo los grupos de distribución cuyo propietario sea este nombre específico.

En nuestro ejemplo, mostrará todos los grupos de distribución cuyo propietario tenga la palabra Amanda.

  • Escriba el nombre de Identidad entre los asteriscos (*)
  • Ejecute el siguiente script de PowerShell
$users = Get-User -Identity *amanda*

foreach ($user in $users) {
    $userPrincipalName = $user.UserPrincipalName
    $displayName = $user.DisplayName

    Get-DistributionGroup -ResultSize Unlimited | Where-Object { $_.ManagedBy -like "*$($user.Identity)*" } | 
    Select-Object DisplayName, PrimarySmtpAddress,
    @{Name = 'UserPrincipalName'; Expression = { $userPrincipalName } },
    @{Name = 'UserDisplayName'; Expression = { $displayName } }
}

La salida de PowerShell muestra todos los grupos de distribución que pertenecen a Amanda.

DisplayName         PrimarySmtpAddress          UserPrincipalName          UserDisplayName
-----------         ------------------          -----------------          ---------------
Sales Germany       SalesGermany@m365info.com   Amanda.Hansen@m365info.com Amanda Hansen
Sales Germany       SalesGermany1@m365info.com  Amanda.Hansen@m365info.com Amanda Hansen
Sales France        SalesFrance@m365info.com    Amanda.Morgan@m365info.com Amanda Morgan

Mostrar todos los propietarios de un único grupo de distribución

Puede mostrar qué propietarios tiene un grupo de distribución específico.

Ejecute el siguiente comando de PowerShell para mostrar los propietarios de un grupo de distribución específico.

$group = Get-DistributionGroup -ResultSize Unlimited -Filter "PrimarySmtpAddress -eq 'SalesGermany@m365info.com'"
$managedBy = $group.ManagedBy | Get-User
$managedBy | Select-Object DisplayName, Identity

La salida de PowerShell muestra el ID de objeto de todos los propietarios.

DisplayName    Identity
-----------    --------
Brenda Smith   0f38d53f-cbe0-4844-86e9-1032a45ba31b
George Wilson  67962421-00e7-448b-b382-83b7b434e41c
Amanda Hansen  41377e9c-dc47-46c0-b4a5-1d5bbdcb5cc5
Ken Walker     12eefbb2-e5f4-4eec-bd18-df7ca2f1ee6b

Mostrar todos los grupos de distribución con moderador

No todos los grupos de distribución tienen un moderador porque no está configurado de forma predeterminada. Un moderador puede aprobar o rechazar los mensajes enviados al grupo de distribución.

  1. Mostrar una lista de todos los grupos de distribución existentes con y sin moderador

Ejecute el siguiente ejemplo de comando de PowerShell:

Get-DistributionGroup -ResultSize Unlimited | ft DisplayName, ModeratedBy

Resultado de salida de PowerShell:

DisplayName          ModeratedBy                                                                 
-----------          -----------                                                                 
Sales Employees      {}                                                                          
Sales UK             {41377e9c-dc47-46c0-b4a5-1d5bbdcb5cc5, eec2668a-0773-4947-93ba-2223f6acfe55}
Sales USA mail list  {}                                                                          
  1. Mostrar una lista de todos los grupos de distribución que tienen un moderador

Ejecute el siguiente ejemplo de comando de PowerShell.

Get-DistributionGroup -ResultSize Unlimited -Filter 'ModeratedBy -ne $null' | ft DisplayName, ManagedBy

La salida de PowerShell muestra el siguiente resultado.

DisplayName ManagedBy                             
----------- ---------                             
Sales UK    {41377e9c-dc47-46c0-b4a5-1d5bbdcb5cc5, eec2668a-0773-4947-93ba-2223f6acfe55}

Mostrar todos los grupos de distribución que están sincronizados desde Active Directory local

Ejecute el siguiente ejemplo de comando de PowerShell.

Get-DistributionGroup -ResultSize Unlimited | Where-Object { $_.IsDirSynced -eq $true } | ft DisplayName, IsDirSynced

Mostrar la configuración de administración de entrega del grupo de distribución

El término gestión de entrega está relacionado con los usuarios que pueden enviar mensajes al grupo de distribución. Hay dos tipos de remitentes:

  • Remitentes internos (destinatarios de la organización), que se describen como destinatarios autenticados.
  • Remitentes externos (destinatarios que no pertenecen a la organización), que se describen como destinatarios no autenticados.

Cuando crea un nuevo grupo de distribución, la opción Permitir solo mensajes de personas dentro de mi organización está habilitada. El parámetro que define esta opción es -RequireSenderAuthenticationEnabled.

De forma predeterminada, el valor del parámetro -RequireSenderAuthenticationEnabled está establecido en $True. Sólo las personas dentro de su organización pueden enviar mensajes al grupo de distribución.

También puede permitir que personas ajenas a la organización realicen envíos al grupo de distribución. El valor del parámetro -RequireSenderAuthenticationEnabled debe establecerse como $False.

Mostraremos una lista de todos los grupos de distribución que han habilitado o deshabilitado remitentes externos.

Ejecute el ejemplo del comando PowerShell.

Get-DistributionGroup -ResultSize Unlimited | ft DisplayName, RequireSenderAuthenticationEnabled

El resultado de salida de PowerShell.

DisplayName          RequireSenderAuthenticationEnabled
-----------          ----------------------------------
Mail security                                     False
Sales Employees                                   False
Sales France                                       True
Sales Germany                                      True
Sales Norway                                       True
Sales Spain                                        True
Sales Sweden                                       True
Sales UK                                          False
Sales USA mail list                               False

Mostrar grupos de distribución que aceptan correo electrónico de destinatarios externos

Vea solo una lista de grupos de distribución que aceptan destinatarios externos para enviar correos electrónicos.

Ejecute el ejemplo del comando PowerShell.

Get-DistributionGroup -ResultSize Unlimited | Where-Object { $_.RequireSenderAuthenticationEnabled -eq $True } | ft DisplayName, RequireSenderAuthenticationEnabled

Vea el resultado de salida de PowerShell a continuación.

DisplayName RequireSenderAuthenticationEnabled
----------- ----------------------------------
Sales UK                                  True

Mostrar grupos de distribución que no aceptan correo electrónico de destinatarios externos

Solo mostraremos una lista de grupos de distribución que no permiten que personas ajenas a la organización (destinatarios externos) envíen correos electrónicos a este grupo.

Ejecute el siguiente comando de PowerShell:

Get-DistributionGroup -ResultSize Unlimited | Where-Object { $_.RequireSenderAuthenticationEnabled -eq $False } | ft DisplayName, RequireSenderAuthenticationEnabled

El resultado de salida de PowerShell:

DisplayName         RequireSenderAuthenticationEnabled
-----------         ----------------------------------
Sales Employees                                  False
Sales USA mail list                              False

Exportar lista de grupos de distribución, incluidos los miembros, a CSV

Le mostraremos cómo exportar toda la información que se muestra como resultados de salida de PowerShell. Puede exportar la salida de PowerShell en los siguientes formatos de archivo: texto, CSV, HTML y XML.

Para exportar la salida del comando PowerShell a un formato de archivo CSV (valores separados por comas), podemos agregar parámetros adicionales como:

  • -NoTypeInformation: Evita que PowerShell agregue información innecesaria al archivo CSV
  • -Codificación UTF8: Puede exportar todos los caracteres que no estén en inglés, como el chino o el árabe.

Debe agregar una ruta para exportar los datos, lo que significa que debe crear una carpeta específica (temp) y guardarla en la unidad (C:). Ningún comando de PowerShell creará una carpeta específica especificada en la ruta.

Una vez configurado, le mostraremos cómo exportar información de la lista de grupos de distribución a varios tipos de archivos.

  1. Exportar información a un archivo CSV. Ejemplo de comando de PowerShell:
Get-DistributionGroup -ResultSize Unlimited | Export-CSV "C:\temp\DistributionGroups.csv" -NoTypeInformation -Encoding UTF8
  1. Exportar información a un archivo de texto Ejemplo de comando de PowerShell:
Get-DistributionGroup -ResultSize Unlimited | Out-File "C:\temp\DistributionGroups.txt"
  1. Exportar información a un archivo HTML Ejemplo de comando de PowerShell:
Get-DistributionGroup -ResultSize Unlimited | ConvertTo-Html | Out-File "C:\temp\DistributionGroups.html"

Exportar la lista de grupos de distribución únicos, incluidos los miembros, a CSV

Puede exportar información de todos los miembros de un grupo de distribución específico.

En nuestro ejemplo, queremos exportar todos los miembros del grupo de distribución Sales UK.

Get-DistributionGroupMember -ResultSize Unlimited -Identity "Sales UK" | Select-Object DisplayName, PrimarySmtpAddress, ExternalEmailAddress, Alias | Export-Csv "C:\temp\DistributionGroupMembers.csv" -NoTypeInformation -Encoding UTF8

Exportará el archivo CSV a la carpeta C:\temp. Abra el archivo CSV con Microsoft Excel para ver los resultados.

La siguiente imagen muestra un ejemplo de un archivo CSV con todos los miembros del grupo (incluidos los contactos) del grupo de distribución Sales UK.

Exportar lista de todos los grupos de distribución, incluidos los miembros, a CSV

Puede exportar una lista de todos los miembros del grupo de distribución a un único archivo CSV.

Ejecute el script de PowerShell.

$Groups = Get-DistributionGroup -ResultSize Unlimited

# Initialize an array to store the data
$data = @()

foreach ($Group in $Groups) {
    $Members = Get-DistributionGroupMember -ResultSize Unlimited -Identity $Group.PrimarySmtpAddress

    foreach ($Member in $Members) {
        if ($Member.PrimarySmtpAddress) {
            $Recipient = Get-Recipient -Identity $Member.PrimarySmtpAddress

            $data += [PSCustomObject]@{
                GroupName = $Group.DisplayName
                GroupPrimarySmtpAddress = $Group.PrimarySmtpAddress
                MemberDisplayName = $Member.DisplayName
                MemberPrimarySmtpAddress = $Member.PrimarySmtpAddress
                RecipientType = $Recipient.RecipientType
                MemberAlias = $Recipient.Alias
            }
        } else {
            $data += [PSCustomObject]@{
                GroupName = $Group.DisplayName
                GroupPrimarySmtpAddress = $Group.PrimarySmtpAddress
                MemberDisplayName = $Member.DisplayName
                MemberPrimarySmtpAddress = "-"
                RecipientType = "-"
                MemberAlias = "-"
            }
        }
    }
}

# Export the data to a CSV file
$data | Export-Csv -Path "C:\temp\AllDistributionGroupMembers.csv" -NoTypeInformation -Encoding UTF8

Exportará el archivo CSV a la carpeta C:\temp. Abra el archivo CSV con Microsoft Excel para ver los resultados.

El resultado final muestra una lista de todos los grupos de distribución, incluidos sus miembros y contactos en su organización.

Leer más: Exportar el buzón de Microsoft 365 a un archivo PST »

Conclusión

Aprendió a exportar grupos y miembros de distribución con PowerShell. Obtenga una lista detallada de todos los grupos de distribución, incluidos sus miembros, y expórtela a un archivo CSV. Con PowerShell, puede personalizar y crear su propio informe detallado sobre todos los grupos de distribución.

Disfrutaste este artículo? También te puede interesar Exportar el informe de tamaño del buzón de Microsoft 365 con PowerShell. No olvides seguirnos y compartir este artículo.

Artículos relacionados