Exchange - Nutzung der Cmdlet Extension Agents (Scripte automatisch bei Ereignissen ausführen lassen)
Einleitung
Viele von euch kennen vermutlich folgende Situation:Wir müssen z.B. bei neu angelegten Mailboxen im Exchange bestimmte Berechtigungen setzen oder das ein oder andere Feature in der Mailbox deaktivieren, und und und. Dies lässt sich nun auf der einen Seite mit Scripten realisieren die wir dann aber ausschließlich für das Erstellen von Mailboxen benutzen können, da ansonsten eine Anlage über die EMC nachträgliche Arbeiten erfordern würde.
Eine interessante Alternative dazu ist ein Feature, dass viele aber nicht kennen, und ab Exchange Server 2010 verfügbar ist: Die Cmdlet Extension Agents springen bei bei jedem Aufruf eines Powershell-CMDLets (z.B. "new-mailbox" / "remove-mailbox" etc.) in die Bresche und können automatisch Scripte aufrufen welche die zusätzlich nötigen Aufgaben im Hintergrund erledigen. Die Admins können dann also die gewohnten Tools wie die EMC und EMS zur Useranlage nutzen, und im Hintergrund wird dann der Rest automatisch vorgenommen.
Wie man die Cmdlet Extension Agents aktiviert und wie man sie nutzt, erfahrt Ihr in dieser Anleitung.
1. Erstellen der Konfigurationsdatei
Wir erstellen folgende Konfigurationsdatei mit dem Namen ScriptingAgentConfig.xml. Dieser Name darf nicht verändert werden !<?xml version="1.0" encoding="utf-8" ?>
<Configuration version="1.0">
<Feature Name="MeineMailboxAktionen" Cmdlets="new-mailbox">
<ApiCall Name="OnComplete">
if($succeeded) {
$newmailbox = $provisioningHandler.UserSpecifiedParameters["Name"]
set-casmailbox $newmailbox -ImapEnabled $false
}
</ApiCall>
</Feature>
</Configuration>
C:\Program Files\Microsoft\Exchange Server\V14\Bin\CmdletExtensionAgents\
Was macht die Konfigurationsdatei nun genau ?
Betrachten wir die folgende Zeile: <Feature Name="MeineMailboxAktionen" Cmdlets="new-mailbox">. Der Parameter "Cmdlets" gibt an welche Cmdlets unsere benutzerdefinierte Aktion auslösen. In diesem Fall, wenn eine neue Mailbox angelegt wird. Hier können wir auch mehrere CMDlets definieren, indem wir sie mit einem Komma voneinander trennen. Den Name-Parameter können wir frei wählen. In der XML-Datei können auch mehrere solcher Feature-Abschnitte für unterschiedliche CMDLets angelegt werden.
Die nächste Zeile <ApiCall Name="OnComplete"> legt fest wann unsere benutzerdefinierte Aktion ausgelöst wird. Im Beispiel ist es das OnComplete-Event welches ausgelöst wird, sobald der Befehl beendet wurde. Hier können wir auch das Validate-Event benutzen welches noch vor dem Eigentlichen CMDLet-Befehl ausgelöst wird. Dies kann z.B. dazu genutzt werden um eine Mailbox bevor sie entfernt wird, noch vorher via "New-MailboxExportRequest" als PST-Datei zu sichern.
Im obigen Beispiel wird bei jeder Neuanlage einer Mailbox, in dieser das IMAP-Feature deaktiviert. Um den Namen der betroffenen Mailbox zu erhalten, wird diese Zeile genutzt:
$newmailbox = $provisioningHandler.UserSpecifiedParameters["Name"]
2. Aktivieren der Cmdlet Extension Agents
Um die Agents zu aktivieren müssen wir noch folgenden Befehl in einer Exchange Management Shell absetzen:Enable-CmdletExtensionAgent "Scripting Agent"
3. Nutzung von externen Scripten
Natürlich kann man in der obigen XML-Datei auch ein externes Script aufrufen das die entsprechenden Befehle enthält, und Ihm mit einem Parameter das entsprechend betroffene Objekt mit übergeben.c:\scripts\new-mailbox-script.ps1 -name $newmailbox
Aber im Großen und Ganzen ein sehr nützliches Feature, das es wert ist mal erwähnt zu werden
Grüße @colinardo
Please also mark the comments that contributed to the solution of the article
Content-ID: 231958
Url: https://administrator.de/contentid/231958
Printed on: October 6, 2024 at 19:10 o'clock
11 Comments
Latest comment
Hallo @colinardo,
danke für den super Beitrag. Ich habe mich mal an die Sache gewagt und zwar so wie du es in deiner Anleitung beschrieben hattest. Selbstverständlich habe ich das auf meine Bedürfnisse (OWA & ActiveSync disablen) angepasst.
Meine XML sah dann so aus:
Ich habe das so verstanden, dass im Featurename alles drin stehen darf, daher irrelevant. Dann habe ich im nächsten step die XML OWAActiveSyncOff.xml benannt und Enable-CmdletExtensionAgent "Scripting Agent" - das gab eine dicke Fehlermeldung nachdem ich die EMC gestartet habe . Also schwupps, die Datei in ScriptingAgentConfig.xml umbenannt und schon war die böse Meldung weg. Problem: Nach Neuanlage eines Postfachs waren sowohl ActiveSync als auch OWA enabled...
Ich gehe mal davon aus, dass meine XML falsch ist, kannst du das bestätigen?! Danke dir im Voraus für deine Mühe!
Gruß
B
danke für den super Beitrag. Ich habe mich mal an die Sache gewagt und zwar so wie du es in deiner Anleitung beschrieben hattest. Selbstverständlich habe ich das auf meine Bedürfnisse (OWA & ActiveSync disablen) angepasst.
Meine XML sah dann so aus:
<?xml version="1.0" encoding="utf-8" ?>
<Configuration version="1.0">
<Feature Name="OWAActiveSyncOff" Cmdlets="new-mailbox">
<ApiCall Name="OnComplete">
if($succeeded) {
$newmailbox = $provisioningHandler.UserSpecifiedParameters["Name"]
set-casmailbox $newmailbox -OWAEnabled $false
set-casmailbox $newmailbox -ActiveSyncEnabled $false
}
</ApiCall>
</Feature>
</Configuration>
Ich habe das so verstanden, dass im Featurename alles drin stehen darf, daher irrelevant. Dann habe ich im nächsten step die XML OWAActiveSyncOff.xml benannt und Enable-CmdletExtensionAgent "Scripting Agent" - das gab eine dicke Fehlermeldung nachdem ich die EMC gestartet habe . Also schwupps, die Datei in ScriptingAgentConfig.xml umbenannt und schon war die böse Meldung weg. Problem: Nach Neuanlage eines Postfachs waren sowohl ActiveSync als auch OWA enabled...
Ich gehe mal davon aus, dass meine XML falsch ist, kannst du das bestätigen?! Danke dir im Voraus für deine Mühe!
Gruß
B
Hi Colinardo,
Ersteres geprüft, war vorhanden und wurde demnach angezeigt. Prioriät habe ich dann auf 3 erhöht und ein neues Postfach angelegt - leider kein Erfolg. Sehr komisch. In meiner Konstellation habe ich 2 Exchange Server - auf beiden die XML abgelegt... Kann mir auch nicht vorstellen, dass ein anderer Agent dieses überschreibt...
Gruß
Belloci
Ersteres geprüft, war vorhanden und wurde demnach angezeigt. Prioriät habe ich dann auf 3 erhöht und ein neues Postfach angelegt - leider kein Erfolg. Sehr komisch. In meiner Konstellation habe ich 2 Exchange Server - auf beiden die XML abgelegt... Kann mir auch nicht vorstellen, dass ein anderer Agent dieses überschreibt...
Gruß
Belloci
Hi,
hier die Ausgabe:
Exchange hat den aktuellen Patchstand!
hier die Ausgabe:
RunspaceId : 3e2d5bd7-dfcd-...
Assembly : Microsoft.Exchange.ProvisioningAgent.dll
ClassFactory : Microsoft.Exchange.ProvisioningAgent.ScriptingAgentClassFactory
Enabled : True
Priority : 1
IsSystem : False
AdminDisplayName :
ExchangeVersion : 4.0 (14.1.166.0)
Name : Scripting Agent
DistinguishedName : CN=Scripting Agent,CN=CmdletExtensionAgent Settings,CN=Global Settings,CN=ABCD,CN=Mic
rosoft Exchange,CN=Services,CN=Configuration,DC=xxx,DC=local
Identity : Scripting Agent
Guid : 941284d0-4731-4e0c....
ObjectCategory : xxx.local/Configuration/Schema/ms-Exch-Cmdlet-Extension-Agent
ObjectClass : {top, configuration, msExchCmdletExtensionAgent}
WhenChanged : 16.04.2014 14:06:24
WhenCreated : 01.12.2011 16:50:53
WhenChangedUTC : 16.04.2014 12:06:24
WhenCreatedUTC : 01.12.2011 15:50:53
OrganizationId :
OriginatingServer : xxx.local
IsValid : True
Exchange hat den aktuellen Patchstand!