Problem:
Mitarbeiter hatten die Anforderungen, selber Verteilerlisten mit externen Projektpartnern zu verwalten. Eine Exchange-Verteilerliste zu verwalten, ist eigentlich keine große Aufgabe. Die Probleme fangen an, sobald externe Adressen benötigt werden in der Verteilerliste. Dazu ist jeweils ein AD-Objekt notwendig, das als Kontakt angelegt worden ist.
Ich habe mir diverse Lösungen angeschaut, dies über RSAT zu machen. Die waren mir aber zu unflexibel, da auf jedem Rechner erst mal RSAT installiert werden muss.
Meine Lösung ist über die Exchange-Rollen zu realisieren. Das Pflegen geht über die ECP-Konsole des Exchange-Servers. Die Kontakte werden in eine eigene OU gepackt und von den jeweiligen Mitarbeitern selber verwaltet. Das Ganze hat diverse Stunden gedauert: Wie diese Rollen ticken und welche Kommandos notwendig sind, dazu gibt es wenige Beispiele. Was ich selber nicht hin bekommen habe, war, den „write scope“ so zu setzen, dass der Anwender nicht immer die OU auswählen muss. Wer hier eine Lösung hat, darf sie mir gerne mitteilen.
Ich habe mir diverse Beispiele angeschaut und aus den ganzen Beispielen mir eine Lösung zusammen gebaut. Das Ganze wurde auf einem Exchange Server 2013 durchprobiert, sollte für 2016 genauso gehen.
Dann werfen wir die Powershell an. Dazu schauen wir uns mal die Rollen an. Wir brauchen dafür nur ein paar Rechte aus den Rollen. Es sind ca. 125 also doch etwas unübersichtlich.
Get-ManagementRoleEntry „Mail Recipients\*“ | Select Name
Get-ManagementRoleEntry „View-Only Recipients\*“ | Select Name
Wir erstellen uns neue Rollen, dies geht mit folgenden Befehlen
1. New-ManagementRole -Parent „Mail Recipients“ -Name „Custom Role – Mail Contacts“
2. New-ManagementRole -Parent „Mail Recipient Creation“ -Name „Custom Role – Mail Contacts Creation“
Jetzt haben wir eine 1-zu-1-Kopie der bestehenden Rollen anfertigt. Wir verwenden dazu folgenden Befehl
Get-ManagementRoleEntry „Custom Role – Mail Contacts\*“ | Where {$_.Name -notlike „*MailContact“} | Remove-ManagementRoleEntry
Wir werden hier gefragt, ob wir wirklich die Rechte entfernen möchten, dies beantworten wir mit A für Alle. Sonst darf man jedes einzelne Recht bestätigen, was entfernt werden soll.
Get-ManagementRoleEntry „Custom Role – Mail Contacts Creation\*“ | Where {$_.Name -notlike „*MailContact“} | Remove-ManagementRoleEntry
Wir schauen uns die angepassten Custom Rollen an mit folgendem Befehl.
Get-ManagementRoleEntry „Custom Role – Mail Contacts\*“
Wir sehen nun in der Custome Role – Mail Contacs nur noch vier Rollen, die wir benötigen. Die Rollen heißen wie folgt:
Disable-Mailcontact
Enable- Mailcontact
Get-MailContact
Set-MailContact
Get-ManagementRoleEntry „Custom Role – Mail Contacts Creation\*“
Hier sind nur noch drei übrig mit folgender Bezeichnung:
Get-MailContact
New-Mailcontact
Remove-MailContact
Jetzt müssen wir noch eine letzte Custom Rolle erstellen:
New-ManagementRole -Parent „View-Only Recipients“ -Name „Custom Role – View-Only Recipients“
Wir entfernen wieder alle nicht benötigte Rollen:
Get-ManagementRoleEntry „Custom Role – View-Only Recipients\*“ | Where {$_.Name -notlike „*MailContact“} | Remove-ManagementRoleEntry
Wieder mit A alles entfernen
Ich habe jetzt keine Möglichkeit gefunde,n wie ich in einer Zeile mehrere Rollen gleichzeitig hinzufügen kann per Powershell.
Folgende Rollen benötigen wir noch
Add-ManagementRoleEntry „Custom Role – View-Only Recipients\Get-OrganizationalUnit“
Add-ManagementRoleEntry „Custom Role – View-Only Recipients\Get-Recipient“
Add-ManagementRoleEntry „Custom Role – View-Only Recipients\Get-Contact“
Es sind dann vier Rollen in der „Custom Role – View-Only Recipients“ Rolle zu sehen.
Get-Contact
Get-Recipient
Get-OrganizationalUnit
Get-MailContact
Nun erstellen wir eine Admin-Rolle mit der Powershell, in der wir unsere 3 Custom Rollen gleichzeitig hinzufügen. Dies würde auch über die ECP GUI gehen.
New-RoleGroup –Name “Contact Editor” –Roles “Custom Role – View-Only Recipients”, „Custom Role – Mail Contacts“, „Custom Role – Mail Contacts Creation“
Anpassungen der ECP-Konsole
Danach geht es in der ECP-Konsole des Exchange Admins. Unter “Admin Rollen” finden wir nun eine Rolle mit dem Namen „Contact Editor“. Wir definieren nun einen Benutzer über die ECP, der Kontakte pflegen kann. Der Benutzer muss nicht zwingend eine Mailbox besitzen. Ein reines AD Konto reicht aus. Hier sei noch angemerkt, wird ein Benutzer mit Mailbox verwendet, so kann er seine eigene ECP-Seite nicht mehr aufrufen.
Wir definieren eine OU, in der diese Rolle schreiben und löschen darf, speichern das Ganze und melden uns an der ECP Konsole mit dem definierten Benutzer an.
Angepasste ECP-Seite
Nun sehen wir eine sehr abgespeckte ECP Webseite.
Es ist nicht möglich, Kontakte außerhalb der definierten OU zu bearbeiten. Ich kann diese zwar sehen aber nicht bearbeiten.
Wir erstellen nun einen neuen Kontakt
Wie wir sehen, haben wir nur die Möglichkeit einen Kontakt und keine Mailbox zu erstellen.
Nun sind die entsprechenden Felder zu füllen, die benötigt werden. Wichtig dabei ist, auch die richtige OU zu wählen, in der die Kontakt angelegt werden sollen.
Speichern klicken, und das war es auch schon. Der Kontakt wird in die definierte OU geschrieben und kann nun in den Mailverteiler mit aufgenommen werden.
Noch ein paar Powershell-Befehle, die mir geholfen haben
Wie entferne ich eine selbst gebaute Rolle wieder
Remove-ManagementRole „Custom Role – View-Only Recipients“
Eine leere Rolle mit einer vorhanden füllen
Get-ManagementRoleEntry „View-Only Recipients\*“ | Add-ManagementRoleEntry -Role „Custom Role – View-Only Recipients“
http://faq-o-matic.net/?p=8182