CmdLetExtensionAgent (ab Exchange 2010)
Wer Exchange 2010 verwaltet sollte wissen, dass er nur noch Dirigent ist und alle Aktionen an die Exchange Server zur Ausführung übergeben werden. In der Regel ändert ein Administrator also nicht mehr Felder oder Werte direkt im Active Directory mit seinen Berechtigungen. Durch diese Teilung können auch Benutzer ohne erweiterte Rechte auf dem AD bestimmte Tätigkeiten durchführen (Delegierung von Rolle) und die Software auf dem Exchange Server kann natürlich eine Plausibilitätsprüfung durchführen, die Aktionen in ein Auditlog schreiben und andere Aufgaben erfüllen.
Beliebtes Beispiel ist der "New-Mailbox"-Prozess. Wenn Sie eine neue Mailbox z.B. mit dem Assistenten anlegen, dann ist danach POP3, IMAP4 schon aktiviert und bestimmte Vorgaben (z.B. Archiv, UM-Policy, etc.) sind nicht gesetzt. Leider können weder die Exchange 2007 noch 2001 MMC die Funktion, ein Template anzuwenden oder Einstellungen von einem bestehenden Postfach zu übernehmen. Also müssen Sie immer noch "Nacharbeiten". Genau das geht über diese Extension Agents.
Funktionsweise
Die Agenten müssen natürlich auf allen Servern identisch gehalten werden, da ein Administrator in der Regel ja nicht steuert, mit welchem Exchange Server er sich zur Verwaltung verbindet. Die Agenten erweitern die Funktion, indem Sie bestehende CmdLets ergänzen. Die Ausführung erfolgt dabei nach Prioritäten (Reihenfolge)
- Understanding Cmdlet
Extension Agents
http://technet.microsoft.com/en-us/library/dd335067.aspx
Agenten im Lieferumfang
Microsoft nutzt selbst diese API, um auf dem Server verschiedene Funktionen umzusetzen. Über ein Get-CmdLetExtensionAgent können Sie selbst einfach ermitteln, welche Agenten gerade aktiv sind.
Get-CmdletExtensionAgent | ft name,enabled,priority -wrap -autosize
Bei meiner MusterVM sieht das dann wie folgt aus:
Diese Einstellungen sind organisationsweit und der entsprechende Code ist auf allen Exchange Servern vorhanden. Nun wissen Sie auch, wie das Auditing z.B. implementiert ist. Und wenn Sie den "Rus Agent" sehen, dann stimmt es doch nicht ganz, dass der RUS Tod ist. Die Funktion, nach der Anlage oder Änderung eines Benutzers die Daten entsprechend der Richtlinien auszurichten erledigt nun dieses CmdLet im gleichen Atemzug.
Eigenes Skript mit dem Scripting Agent
Microsoft liefert auch einen "Scripting Agent" mit, welcher aber per Default deaktiviert ist. Diesen können Sie selbst nutzen, um einfache Aufgaben in PowerShell umzusetzen.
Starten Sie Notepad und bearbeiten Sie einfach die Datei "ScriptingAgentConfig.XML" im Ordner "bin\CmdletExtensionAgents" unter dem Exchange Programmverzeichnis. Sollte die Datei noch nicht sein, dann legen Sie diese einfach neu an. Der Inhalt könnte sein:
<?xml version="1.0" encoding="utf-8" ?> <Configuration version="1.0"> <Feature Name="MailboxProvisioning" Cmdlets="new-mailbox"> <ApiCall Name="OnComplete"> if($succeeded) { $mb = $provisioningHandler.UserSpecifiedParameters["Name"] set-casmailbox $mb -POP3Enabled $false } </ApiCall> </Feature> </Configuration>
Sie weist den ScriptingAgent an, immer nach dem Abschluss (OnComplete) des Commandlets "New-Mailbox" die POP3-Funktion abzuschalten.
Diese Einstellung müssen Sie natürlich auf allen Exchange Servern gleich halten. Sie sehen aber auch schon, dass hier eigentlich nur PowerShell Befehle ausgeführt werden. Sie können hier natürlich auch einfach ein komplettes PowerShell Script ausführen.
Ehe das Skript aber aktiv wird, müssen Sie den Agent erst noch aktivieren:
# Einschalten des ScriptingAgents Enable-CmdletExtensionAgent "Scripting Agent"
Das Aktivierung muss nur einmal pro Organisation gemacht werden. Lesen Sie dazu auch die Beschreibung bei Microsoft:
- Understanding the Scripting
Agent
http://technet.microsoft.com/en-us/library/dd297951.aspx
Grenzen des Agenten
Ehe Sie nun allzu viel Phantasie walten lassen, was so als Agent noch alles möglich sein könnte, sollten Sie durchaus noch einmal überlegen, wer und von wo diese Programme und Skripte ausgeführt werden.
- Jeder Exchange Server ist Powershell
Ziel
Jeder Exchange Server kann das Ziel einer PowerShell sein. Sie müssen also schon dafür sorgen, dass die XML-Datei mit der Erweiterung auf wirklich JEDEM Exchange Server identisch vorhande nsid - Kein Agent in der CLoud
Es gibt keinen CMD-Let Extension Agent in Office 365. Ihre "Lösung" wird sich also nur auf Konten On-Premises beziehen können oder solche die per ADSync die Einstellungen in die Cloud replizieren - AD-Replikation und Ziel DC
Per Default nutzen Exchange Commandlets "einen nahen Domain Controller". Das muss nicht immer der gleiche DC sein und damit kommt die DC-Replikation wieder ins Spiel. Ein Enable-Mailbox aktiviert einen Benutzerpostfach und der nächste Schritt nutzt dummerweise einen anderen DC, auf dem der gerade aktivierte Benutzer noch nicht aktiviert ist. Entweder Sie "warten" oder nutzen immer den gleichen DC. - Laufzeit
Jeder Befehl mehr kostet etwas Zeit. Sicher kann man sagen, dass ein POP3-Abschalten nach einem Enable-Mailbox sehr sinnvoll ist aber Einstellungen die sich auf Bereiche ausserhalb von Exchange beziehen machen aus meiner Sicht keinen Sinn. - Debugging
Zuerst müssen Sie natürlich den Server suchen, auf dem ihr Befehl ausgeführt wurde und dann hoffen, dass Sie im Eventlog o.ä, einen Hinweis finden. Oder sie erweitern den Agenten noch um Debug-Ausgaben. Ich kann mir das sehr unschön vorstellen, denn es ist immer noch eine XML-Datei und so sind z.B: Zeichen wie <> verboten. - Trigger/Compliance
Zuletzt sollten Sie daran denken, dass die Commands nur in Verbindung mit den konfigurierten Exchange Commandelets ausgeführt werden. Viele Änderungen in einem Forest erfolgen aber auch über andere Progamme und Skripte. so dass nicht immer Exchange es "mitbekommt" und daher auch nicht darauf reagieren kann. Wenn z.B. ein Admin oder Helpdesk bei einem Benutzer doch wieder POP3 einschaltet oder jemand einen neuen Exchange Server installiert und das kopieren der XML vergessen hat, dann sind sie schon wieder "unstimig".
So schön die Funktion der CMDLet Extention Agents ist, so beschränkt ist auch der Einsatz. Wer hier Zeit investiert, sollte sich eher Gedanken über ein allgemeines "Provisioning" für sein Netzwerk machen. Denn ein Postfach Anlegen ist nur ein Punkt auf dem Laufzettel für neue Mitarbeiter.
Weitere Links
- RBAC
- Understanding Cmdlet
Extension Agents
http://technet.microsoft.com/en-us/library/dd335067.aspx - Managing Cmdlet Extension
Agents
http://technet.microsoft.com/en-us/library/dd298143.aspx - Automating Tasks With
Scripting Agent Cmdlet Extension
Agent In Exchange 2010…
http://www.howexchangeworks.com/2011/06/automating-tasks-with-scripting-agent.htm - Using Cmdlet Extension
Agents to customize mailbox
provisioning in Exchange Server
2010
http://blog.PowerShell.no/2010/10/17/using-cmdlet-extension-agents-to-customize-mailbox-provisioning/l - Enable-CmdletExtensionAgent
http://technet.microsoft.com/en-us/library/dd335192.aspx - Get-CmdletExtensionAgent
http://technet.microsoft.com/en-us/library/dd297946.aspx - Exchange and Shell Infrastructure Permissions
http://technet.microsoft.com/en-us/library/dd638114.aspx - Exchange Server:
Willkommensnachricht für neue
Mailboxen (Scripting Agent)
http://asichel.de/2016/07/29/exchange-server-willkommensnachricht-fuer-neue-mailboxen-scripting-agent/ - Using Cmdlet Extension Agents to cause automatic
events to occur in Exchange 2010 - life just got
simpler!
http://www.ucblogs.net/blogs/exchange/archive/2010/05/29/Using-Scriping-Agent-to-cause-automatic-events-to-occur-in-Exchange-2010-_2D00_-life-just-got-simpler_2100_.aspx
Erweitert "New-Mailbox" um die Funktion, eine Willkommensmail zu senden - RBAC and Exchange Trusted Subsystem
http://blogs.technet.com/b/jamec/archive/2010/02/26/rbac-and-exchange-trusted-subsystem.aspx - Exchange 2010 Administrator Audit log PowerShell GUI
http://gsexdev.blogspot.com/2011/03/exchange-2010-administrator-audit-log.html