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.

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:

Download

So nun habe ich sie lange genug mit Vorarbeiten, Beschreibungen und dem Einsatz samt Warnungen aufgehalten. Hier das Skript.

grp2cas.1.2.ps1

Offen

Kein Skript ist vollkommen, folgende Verbesserungen stehen noch auf meiner Wunschliste

Sie sehen also, dass die Arbeit nie ausgeht.

Weitere Links

Keywords:GRPEXINET GRP2CAS Policies Tools Powershell