Bei dynamisch erstellten Gruppen funktioniert das nicht! Das hat einfach den Hintergrund, dass dynamische Gruppen (wie der Name schon sagt) sich jederzeit ändern können. Die Auflösung der Gruppe in die einzelnen Empfänger findet erst auf dem Server statt, nachdem dieser die zu sendende Mail erhalten hat.
Unser Problem ist nun, dass der User wissen möchte an welche Empfänger denn nun die Mail verschickt wird, bevor er auf Senden drückt. Leider gibt es hier keine Lösung von Exchange Seite - Zumindest nicht auf dem Exchange 2010.
Aber man kann sich eine Lösung selbst basteln, die diese User im Hinweisfeld der Gruppe anzeigt.
Der User kann dieses Feld einsehen, wenn er die Gruppe mit rechter Maustaste anklickt und sich die Eigenschaften anzeigen lässt.
Auf dem Exchange Server muss zum Schreiben dieses Hinweisfeldes ein Skript ausgeführt werden, dieses Skript kann über die Aufgabenplanung auch automatisiert werden, hier kann man Steuern wie oft am Tag aktualisiert wird.
Hier das Skript für den Exchange Server:
Code: Alles auswählen
# Da dynamische Gruppen des Exchange im Outlook nicht aufgelöst werden können,
# schreibt dieses Skript die Namen der Mitglieder in ein Hinweisfeld, das unter
# den Eigenschaften der Gruppe angezeigt wird.
# Funktion die für jede Gruppe durchläuft
function write-Eventlog([string]$gname)
{
$text = "Die Dynamische Verteilergruppe " + $gname + " wurde aktualisiert."
$Eventlog = new-object System.Diagnostics.EventLog('Application')
$Eventlog.MachineName = "."
$Eventlog.Source = "Verteilergruppen Aktualisierung"
$Eventlog.WriteEntry($text)
}
$groups = Get-DynamicDistributionGroup | select DisplayName, LdapRecipientFilter, RecipientContainer, Notes
foreach ($group in $groups)
{
$members =""
$objContainer ="LDAP://" + $group.RecipientContainer.DistinguishedName
$objDomain = New-Object System.DirectoryServices.DirectoryEntry $objContainer
$strFilter = $group.LdapRecipientFilter
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.Filter = $strFilter
$objSearcher.SearchScope = "Subtree"
$objSearcher.PropertiesToLoad.Add("Name")
$objSearcher.Sort.PropertyName = "Name"
$colResults = $objSearcher.FindAll()
foreach ($Result in $colResults)
{
$objMember = $Result.Properties
if ($objMember.name -ne $null)
{
$members = $members + ", " + $objMember.name
}
}
$members = $members.substring(2,$members.length-2)
if ($members.Length -ge 1023) #nach 1023 Stellen wird abgeschnitten, aufgrund der Größe des Hinweisfeldes.
{
$members = $members.Substring(0,1023)
}
if ($members -ne $group.Notes)
{
write-Eventlog($group.DisplayName)
Set-DynamicDistributionGroup -id $group.DisplayName -Notes $members
}
}