Adressbuchrichtlinien sind ein praktisches Hilfsmittel, wenn man mehrere Organisationen mit einer Exchange-Umgebung bedient.
Dabei kann es unerwünscht sein, dass die unterschiedlichen Organisationen die Adressbucheinträge der anderen Organisationen sehen.
Hier nun eine Beispielkonfiguration für 3 Organisationen.
Die Markierung der unterschiedlichen Benutzer, Gruppen und Kontakte erfolgt per extensionAttribut15. Dies ist Best Practise laut Microsoft!
Es gibt die Abteilungen A1, A2 und A3. A1 ist so konfiguriert, dass es alle Einträge sieht die nicht in A2 oder A3 enthalten sind.
1. AddressbookPolicyRoutingAgent
Install-TransportAgent -Name "ABP Routing Agent" -TransportAgentFactory "Microsoft.Exchange.Transport.Agent.AddressBookPolicyRoutingAgent.AddressBookPolicyRoutingAgentFactory" -AssemblyPath $env:ExchangeInstallPath\TransportRoles\agents\AddressBookPolicyRoutingAgent\Microsoft.Exchange.Transport.Agent.AddressBookPolicyRoutingAgent.dll Enable-TransportAgent "ABP Routing Agent" Restart-Service MSExchangeTransport Get-TransportAgent Set-TransportConfig -AddressBookPolicyRoutingEnabled $true
2. AddressListen.
Es wird nur eine Raumliste erstellt. Diese sehen später alle Benutzer
New-AddressList -Name "A1_Users" -RecipientFilter { (((RecipientType -eq 'UserMailbox') -or (RecipientType -eq 'MailUniversalDistributionGroup') -or (RecipientType -eq 'DynamicDistributionGroup')) -and ((CustomAttribute15 -ne 'A2') -and (CustomAttribute15 -ne 'A3'))) } New-AddressList -Name "A2_Users" -RecipientFilter {((RecipientType -eq 'UserMailbox') -or (RecipientType -eq "MailUniversalDistributionGroup") -or (RecipientType -eq "DynamicDistributionGroup")) -and ( CustomAttribute15 -eq 'A2' )} New-AddressList -Name "A3_Users" -RecipientFilter {((RecipientType -eq 'UserMailbox') -or (RecipientType -eq "MailUniversalDistributionGroup") -or (RecipientType -eq "DynamicDistributionGroup")) -and ( CustomAttribute15 -eq 'A3' )} New-AddressList -Name AL_BlankRoom -RecipientFilter {(Alias -ne $null) -and ((RecipientDisplayType -eq 'ConferenceRoomMailbox') -or (RecipientDisplayType -eq 'SyncedConferenceRoomMailbox'))}
3. GlobalAddressList
New-GlobalAddressList -Name "GAL_A1" -RecipientFilter { ((CustomAttribute15 -ne 'A2') -and (CustomAttribute15 -ne 'A3')) } New-GlobalAddressList -Name "GAL_A2" -RecipientFilter {( CustomAttribute15 -eq 'A2' )} New-GlobalAddressList -Name "GAL_A3" -RecipientFilter {( CustomAttribute15 -eq 'A3' )}
4. OfflineAddressBook
New-OfflineAddressBook -Name "OAB_A1" -AddressLists "GAL_A1" New-OfflineAddressBook -Name "OAB_A2" -AddressLists "GAL_A2" New-OfflineAddressBook -Name "OAB_A3" -AddressLists "GAL_A3"
5. AddressBookPolicys
New-AddressBookPolicy -Name "ABP_A1" -AddressLists "A1_Users" -OfflineAddressBook "\OAB_A1" -GlobalAddressList "\GAL_A1" -RoomList "\AL_BlankRoom" New-AddressBookPolicy -Name "ABP_A2" -AddressLists "A2_Users" -OfflineAddressBook "\OAB_A2" -GlobalAddressList "\GAL_A2" -RoomList "\AL_BlankRoom" New-AddressBookPolicy -Name "ABP_A3" -AddressLists "A3_Users" -OfflineAddressBook "\OAB_A3" -GlobalAddressList "\GAL_A3" -RoomList "\AL_BlankRoom"
6. Update der AddressBooks
Dies kann einige Zeit dauern. Da es im Hintergrund passiert kann man z.B. die CPU-Last als Anhaltspunkt nehmen 😉
Get-AddressList | Update-AddressList Get-GlobalAddressList | Update-GlobalAddressList Get-OfflineAddressBook | Update-OfflineAddressBook
7. Setzen des ExtentionAttributes
Falls die Abteilungen durch OUs getrennt werden könnte dies initial wie folgt geschehen. Dies muss natürlich zyklisch und automatisiert erneuert werden. Wenn es rekursic geschehen muss, muss eine entsprechende Anpassung der Befehle vorgenommen werden. Kontakte und Gruppen dürfen auch nicht vergessen werden!
Get-User -Filter * -OrganizationalUnit 'OU=Abteilung 1,OU=Users.OU,DC=powershell,DC=pub' | Set-mailbox -CustomAttribute15 A1 Get-User -Filter * -OrganizationalUnit 'OU=Abteilung 2,OU=Users.OU,DC=powershell,DC=pub' | Set-mailbox -CustomAttribute15 A2 Get-User -Filter * -OrganizationalUnit 'OU=Abteilung 3,OU=Users.OU,DC=powershell,DC=pub' | Set-mailbox -CustomAttribute15 A3
8. Zuweisen der Policys
Genau wie das setzen der ExtensionAttribute muss dies zyklisch wiederholt werden und natürlich auch für Kontakte und Gruppen durchgeführt werden.
Get-Mailbox -Filter { CustomAttribute15 -eq 'A1' } | Set-Mailbox -AddressBookPolicy ABP_A1 Get-Mailbox -Filter { CustomAttribute15 -eq 'A2' } | Set-Mailbox -AddressBookPolicy ABP_A2 Get-Mailbox -Filter { CustomAttribute15 -eq 'A3' } | Set-Mailbox -AddressBookPolicy ABP_A3
Vor der Konfiguration muss überlegt werden ob man Adressbuchrichtlinien möchte oder ob man ein Hierarchisches Adressbuch möchte.
Leider kann nicht beides gleichzeitig verwendet werden!
Adessbuchrichtlinien
Allgemein:
https://technet.microsoft.com/de-de/library/hh529948(v=exchg.150).aspx
Erstellen einer Adressbuch-Richtlinie:
https://technet.microsoft.com/de-de/library/hh529931(v=exchg.150).aspx
Routing-Agent für Adressbücher:
https://technet.microsoft.com/de-de/library/jj907308(v=exchg.150).aspx
Szenarien mit Konfiguration:
https://technet.microsoft.com/de-de/library/jj657455(v=exchg.150).aspx
Hierarchische Adressbücher
Allgemein:
https://technet.microsoft.com/de-de/library/ff629379(v=exchg.150).aspx
Aktivieren / Deaktivieren:
https://technet.microsoft.com/de-de/library/ff607473(v=exchg.150).aspx