Dienstag, 13. September 2011

Exchange 2010 Provisioning Script (EPS)

Immer wieder geht es in (größeren) Projekten darum, wie User (die meist von irgendeinem System im Active Directory erzeugt werden) ggf. eine Exchange Mailbox bekommen können. Es gibt für diesen sogenannten Provisioning-Process fertige Tools, mit denen ich mich allerdings noch nie beschäftigt habe. Die PowerShell bietet eigentlich alles was man braucht. Hier stelle ich mal ein einfaches Script vor, das diese Aufgabe übernimmt.

Beschreibung:

Das Exchange Provisioning Script (EPS) sucht im AD nach allen Usern die z.B. im “ExtensionAttribute1” bestimmte Werte stehen haben. Ob nun dafür das “ExtensionAttribute1” oder ein anderes Attribut herhalten muss kann man im Script über die Variable “$StatusAttribute” steuern. Es gibt derzeit drei mögliche Werte:

- msxmailbox (es wird eine Mailbox erstellt)
- deletemsxmailbox (es wird die Mailbox des Users gelöscht)
- deletemsxmailboxanduser (es wird die Mailbox des Users gelöscht einschließlich seines AD Uses Accounts)

Beim erstellen der Mailbox werden außerdem einige Parameter gesetzt. Dies kann man in Zeile 64 anpassen. Momentan wird die Sprache der Mailbox auf “de-DE” gesetzt und “IssueWarningQuota auf “450MB” sowie “ProhibitSendQuota” auf “500MB”. Außerdem wird immer, wenn das Script aktiv wurde, das AD Attribute “ExtensionAttribute1” (oder welches ihr auch immer benutzt) mit “readByMSXProvisioning” überschrieben, so dass das entsprechende User-Objekt in Zukunft nicht mehr angefasst wird.

Wenn eine Mailbox gelöscht werden soll (inkl. oder exkl. des AD User Accounts) wird zusätzlich der Parameter $maxDeleteCount abgefragt. Dieser soll verhindern, dass durch einen Fehler massenhaft Mailboxen geslöscht werden. Setzt man diesen Wert z.B. auf 10 – können immer nur max. 10 Mailboxen gleichzeitig durch das Script gelöscht werden. Findet das Script z.B. 11 User Objekte im AD mit dem Wert “deletemsxmailbox” werden gar keine Mailboxen gelöscht, da es von einem Fehler ausgeht.

Wenn eine Mailbox gelöscht wird, wird vorher außerdem die Grundkonfiguration (Get-Mailbox) per export-clixml in ein XML File geschrieben. Um die Rettung der eigentlichen Mailbox Daten muss man sich derzeit noch selbst kümmern.

Das EPS Script logged auch alles was es tut mit und schreibt Errorlogs.

Wer das Script testen möchte, nutzt dazu am besten seine Testumgebung – ich übernehme natürlich keine Garantien, dass alles so funktioniert wie es sollte.

Download Exchange Provisioning Script