Exchange: Dynamische Verteilergruppen // Mitglieder ermitteln

Verwendet man in Exchange 2013 "Dynamische Verteilergruppen", bekommt man zwangsläufig Anfragen bezüglich der darin befindlichen Mitglieder.

Mittels PowerShell ist diese Frage relativ einfach zu beantworten.

Mittels dem folgenden PowerShell Kommando bekommt man alle "Dynamische Verteilergruppen" einer Domäne:

Get-ADObject -filter { Objectclass -eq 'msExchDynamicDistributionList'} -properties *  

Möchte man die Mitglieder haben, dann ist folgende Zeile zu verwenden:

Get-ADObject -filter { Objectclass -eq 'msExchDynamicDistributionList'} -properties * | select Name,@{Label="DynamicMembers";Expression={ (Get-AdUser -LDAPFilter $_.msExchDynamicDLFilter -Properties DisplayName).DisplayName -join ", " } }  

Sinnvoll ist es diese Ergebnisse als HTML Mail täglich an sich selbst zu senden. Dies kann beispielsweise mit folgendem Script erfolgen:

############################################################
#
# Exchange Reporting on Exchange
#
# Version 1.0 Christian Müller
#
###########################################################
#
#
# Öffne Remote Verbindung
$session = new-pssession -ConfigurationName Microsoft.Exchange -ConnectionUri "http://YOUREXCHANGESERVER/PowerShell/"
Import-Pssession $session


$output += Get-ADObject -filter { Objectclass -eq 'msExchDynamicDistributionList'} -properties * | select Name,@{Label="DynamicMembers";Expression={ (Get-AdUser -LDAPFilter $_.msExchDynamicDLFilter -Properties DisplayName).DisplayName -join ", " } } | ConvertTo-Html -fragment

# Generiere HTML Body
$htmlbody = convertto-html -body $output

#
Get-PSSession | Remove-PSSession  
#
Send-MailMessage -SmtpServer smtp.yourdomain -From sender@yourdomain -To receive@yourdomain  -Subject "[Report][Exchange] Dynamische Verteiler" -BodyAsHtml ($htmlbody|out-string)  

Selbstverständlich kann man noch weitere Informationen in die HTML packen, in den man weitere Outputs hinzufügt. So erhält man in laufe der Zeit immer mehr Informationen täglich und kann auch bis zu einem gewissen Grad Änderungen einfach tracken. Hierdurch erspart man sich, dass man alle PowerShell Kommandos auswendig lernen muss.