PowerShell: Como obtener los miembros de los grupos de distribución existentes en Office 365

En esta entrada voy a mostraros un script con el que podéis obtener todos los miembros que componen los distintos grupos de distribución existentes en Office 365.

El proceso es muy sencillo, simplemente tenéis que abrir un bloc de notas, copiar el script que os voy a mostrar a continuación y guardar el archivo con el nombre que queráis con extensión ps1

Es importante que este fichero los guardéis en una carpeta donde tengáis permisos de escritura. Por defecto el fichero CSV resultante se guardará en la misma carpeta donde se encuentre el script.

Si queréis cambiar la ubicación donde se generará el CSV simplemente tendréis que establecer la ruta completa modificando el valor de la variable $OutputFile

#Parametros de Entrada
#Este script acepta 2 parametros opcionales como son el login y la contrasena del usuario administrador que utilizaremos para conectarnos a nuestro tenant
Param( 
    [Parameter(Position=0, Mandatory=$false, ValueFromPipeline=$true)] 
    [string] $Office365Username, 
    [Parameter(Position=1, Mandatory=$false, ValueFromPipeline=$true)] 
    [string] $Office365Password 
) 
 
#En esta variable pondremos la ruta o el nombre del fichero CSV resultante de la consulta
#En el caso de no especificar una ruta el fichero se genera en la misma ruta donde se encuentre este script
$OutputFile = "Listado_Miembros_Grupos.csv"
$arrDLMembers = @{} 
 
#Eliminamos las sesiones existentes de PowerShell en caso de que existan
Get-PSSession | Remove-PSSession 
 
#Sino hemos pasado por parametros las credenciales para conectar al tenant se nos requira
if (([string]::IsNullOrEmpty($Office365Username) -eq $false) -and ([string]::IsNullOrEmpty($Office365Password) -eq $false))
{
    $SecureOffice365Password = ConvertTo-SecureString -AsPlainText $Office365Password -Force     
     
    $Office365Credentials  = New-Object System.Management.Automation.PSCredential $Office365Username, $SecureOffice365Password 
}
else
{
    $Office365Credentials  = Get-Credential
}
#Creamos la sesion con nuestro Tenant
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $Office365credentials -Authentication Basic –AllowRedirection         

#Importamos la sesion
Import-PSSession $Session -AllowClobber | Out-Null          
 
#Preparamos las cabeceras de nuestro fichero CSV
Out-File -FilePath $OutputFile -InputObject "Distribution Group DisplayName,Distribution Group Email,Member DisplayName, Member Email, Member Type" -Encoding UTF8 
 
#Obtenemos todos los grupos de distribucion existente en Office 365 
$objDistributionGroups = Get-DistributionGroup -ResultSize Unlimited 
 
#Recorremos uno a uno cada grupo para ir obteniendo los usuarios
Foreach ($objDistributionGroup in $objDistributionGroups) 
{     
	write-host "Procesando $($objDistributionGroup.DisplayName)..." 
 
	#Obtenemos los miembros del grupo
	$objDGMembers = Get-DistributionGroupMember -Identity $($objDistributionGroup.PrimarySmtpAddress) 
	 
	write-host "Encontrados $($objDGMembers.Count) miembros..." 
	 
	#Recorremos cada uno de los miembros para obtener su informacion
	Foreach ($objMember in $objDGMembers) 
	{ 
		Out-File -FilePath $OutputFile -InputObject "$($objDistributionGroup.DisplayName),$($objDistributionGroup.PrimarySMTPAddress),$($objMember.DisplayName),$($objMember.PrimarySMTPAddress),$($objMember.RecipientType)" -Encoding UTF8 -append 
		write-host "`t$($objDistributionGroup.DisplayName),$($objDistributionGroup.PrimarySMTPAddress),$($objMember.DisplayName),$($objMember.PrimarySMTPAddress),$($objMember.RecipientType)"
	} 
} 

#Cerramos la conexion con el tenant de Office 365
Get-PSSession | Remove-PSSession 

Una vez tenemos guardado nuestro script, lo ejecutaremos haciendo doble clic sobre él.

A continuación nos solicitará las credenciales de una cuenta con permisos para acceder a nuestro tenant de Office 365, introducimos las credenciales y pulsamos en Aceptar.

Y listo ya sólo tendremos que esperar a que se genere nuestro fichero CSV el cual contendrá todos los grupos de distribución que tengamos en Office 365 con cada uno de los miembros que lo forman.

Espero os sea de utilidad.

Entradas relacionadas

Deja un comentario