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.
Hola Sergio si requiero solo extraer información de un usuario en particular? (grupos de distribución y grupos de seguridad al cual pertenece) es posible??
desde ya muchas gracias
Hola Norman,
Es posible pero habría que crear el script y ahora mismo no lo tengo hecho, me lo apunto para una futura entrada. Mientras tanto puedes realizar la exportación tal y como indico en la entrada y una vez lo tengas todo en Excel aplicar un filtro de Excel sobre la columna donde se encuentra los usuarios para que sólo te muestre las filas donde se encuentre.
Saludos.