GRP2CAS
Diese Skript ist das Gegenstück zu Grp2ExInet, um anhand von Gruppenmitgliedschaften bestimmte Funktionen und Berechtigungen indirekt zu steuern. Exchange erlaubt es leider nicht, über Gruppen direkt bestimmte Funktionen zu steuern, sondern ein Administrator kann diese nur auf dem Server global abschalten oder eben pro Postfach. Und darüber kann man schon mal den Überblick verlieren. Zudem gibt es immer wieder Lücken, wenn jemand einen neuen Benutzer anlegt und dieser dann mehr darf als die Allgemeinheit, weil die entsprechenden Einstellungen nicht in der GUI direkt abgefragt wurden.
Daher ist eine Steuerung per Gruppen natürlich eine interessante Option, besonders wenn die noch mit einem Automatismus gepaart wird, der so ein Skript regelmäßig oder bei Änderungen im Active Directory anstößt.
Vorarbeiten
Ehe Sie das Skript einsetzen können, müssen Sie natürlich eine Vorarbeit leisten: Sie müssen die erforderlichen Gruppen für die Anwendung der Richtlinien anlegen und die Mitglieder pflegen. Die Gruppe muss weder eine Sicherheitsgruppe noch muss diese Exchange Enabled sein. Eine einfache AD-Gruppe oder ein AD-Verteiler reicht schon aus. Hier ein Beispiel.

Je nach ihrem OU-Konzept und Administrationskonzept sollten Sie diese Konfigurationsgruppen in eine separate OU legen und steuern, wer die Mitglieder davon pflegen darf. Beachten Sie auch, dass sehr viele Gruppenmitgliedschaften bei Benutzern zu anderen Problemen führen können (z.B. Ticketsize)
Pflegen Sie dann in den Mitgliedern die Benutzer mit Postfach, die z.B. die entsprechende Funktion nutzen dürfen.
Funktionsweise
Das Skript sucht zuerst die Gruppe über das Commandlet "Get-Group" und überträgt die Mitglieder der Gruppe in eine Hashtable.
Achtung: Es werden nur die direkten Mitglieder ausgewertet.
In einem zweiten Schritt werden dann alles CAS-Mailboxen mit "GET-CASMAILBOX" ausgelesen, um je Mailbox dann über die Hashtable zu prüfen, ob das Postfach Mitglied der Gruppe ist. Dieser Weg ist erforderlich, da es zum einen keine direkt Möglichkeit eines Zugriffs auf "MemberOf" über diese Commandlets gibt. Zum anderen ist es aber erforderlich, dass eine Einstellung wieder rückgängig gemacht wird, wenn ein Benutzer aus der Gruppe entfernt wird. Daher kann das Skript nicht einfach die Mitglieder der Gruppe abarbeiten, sondern muss alle potentiellen Mailboxen durchlaufen und die Einstellung vornehmen.
Die Exchange Powershell Shell ist erforderlich, da das Skript auf "GET-CASMAILBOX" und "SET-CASMAILBOX" zugreift.
Einsatz
Wenn Sie dann die Benutzer in die jeweiligen Gruppen aufgenommen haben, können Sie das Skript aus einer Exchange Powershell Shell einfach aufrufen. Der folgende Aufruf aktiviert den "OWA-Zugriff" für alle Mitglieder der Gruppe "grp2cas-owa" und deaktiviert OWA natürlich für alle anderen Konten.
# Aufruf ohne benannte Parameter
.\grp2cas.ps1 cn=grp2cas-owa,ou=grp2cas,ou=msxfaq,dc=e2007,dc=msxfaq,dc=de '-owaenabled $true' '-owaenabled $false'
# Aufruf mit benannten Parametern
.\grp2cas.ps1
-groupname cn=grp2cas-owa,ou=grp2cas,ou=msxfaq,dc=e2007,dc=msxfaq,dc=de
-memberparameter '-owaenabled $true'
-nomemberparameter
'-owaenabled $false'
Beachten Sie, dass die Parameter mit Werten wie "$true" hier in einfache Anführungszeichen verpackt werden müssen, damit dies als String übergeben wird und nicht ersetzt wird. Die Parameter haben dabei folgende Bedeutung. Ab der Powershell 2 können Sie die Parameter auch benennen, ansonsten ist die Reihenfolge einzuhalten.
- -groupname
Der erste Parameter ist der DN der Gruppe. Wenn sie nur eine Domain haben und - -memberparameter
Diese Parameter werden 1:1 so an den Befehl SET-CASMAILBOX übergeben, wenn die Mailbox "Mitglied" in der Gruppe ist - -nomemberparameter
Diese Parameter werden 1:1 so an den Befehl SET-CASMAILBOX übergeben, wenn die Mailbox nicht Mitglied der Gruppe ist
Danach müssen Sie nur noch sicherstellen, dass das Skript eben regelmäßig oder zumindest nach Änderungen an den Gruppenzugehörigkeiten aufgerufen wird.
ACHTUNG: Das Skript ist „scharf !!!!
Wer erst mal sehen möchte, was passiert, möge die Zeile am Ende mit dem
"Invoke-Expression" auskommentieren und die Logausgaben
kontrollieren.
Logging
Über die Funktion "Start-Transcript" wird jede Aktion in eine Textdatei im gleichen Verzeichnis protokolliert.

Sorgen Sie bitte dafür, dass Sie diese Logs später archivieren oder löschen, damit die Festplatte nicht voll läuft.
MultiDomain-Einsatz
Das Skript ist darauf ausgelegt, alle Objekte in einem Forest zu bearbeiten. Dazu wird die Option "IgnoreDefaultScope" und "Resultsize unlimited" verwendet, was drei Dinge zur Folge hat:
- Angabe der Gruppe über den DN
In der Zeile "Get-Group" muss beim Einsatz von "IgnoreDefaultScope" die Gruppe als DN angegeben werden. Der kurze Namen reicht nicht aus. Wen das stört und eh nur eine Domain hat, der kann das "-IgnoreDefaultScope" gerne entfernen und mit kurzen Gruppennamen arbeiten. - Lange Laufzeit in großen Umgebungen
Ein sehr großen Umgebungen dauert ein "GET-CASMailbox sehr lange. Das ist in Ordnung, wenn wirklich alle Objekte bearbeitet werden müssen. - Globaler Fokus
Vielleicht ist es auch gar nicht gewollt, dass diese Logik "alle" Konten verarbeitet. Dann können sie in der aktuellen Version dies noch nicht per Parameter angeben. Aber sie können das Skript natürlich selbst "ändern" und z.B.: einen Scope mit angeben.
Download
So nun habe ich sie lange genug mit Vorarbeiten, Beschreibungen und dem Einsatz samt Warnungen aufgehalten. Hier das Skript.
Offen
Kein Skript ist vollkommen, folgende Verbesserungen stehen noch auf meiner Wunschliste
- ReadOnly-Mode / WhatIf
Vielleicht wollen Sie ja nicht sofort die Änderungen eintragen sondern erst mal sehen, was passieren würde. - Einschränken des Scope
Man muss nicht immer gleich ALLE Mailboxen bearbeiten. Eine Scope-Funktion wäre wünschenswert, um die Zielgruppe einzuschränken. - Warnung bei Gruppen
Speziell bei mehreren Domain sollten Sie immer universelle Gruppen für die Steuerung verwenden. Eine falsche Gruppe sollte zumindest eine Warnung generieren.
Sie sehen also, dass die Arbeit nie ausgeht.
Weitere Links
- Set-CASMailbox E2010
http://technet.microsoft.com/en-us/library/bb125264.aspx - Set-CASMailbox E2007
http://technet.microsoft.com/en-us/library/bb125264(EXCHG.80).aspx - Invoke-Expression
http://technet.microsoft.com/de-de/library/dd347550.aspx - Grp2ExInet
- Ticketsize
- Windows Gruppen und Berechtigungen










