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 kennen 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)

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:

Weitere Links

Keywords:Powershell ExtensionAgent CmdLet RBAC