Cmdlet-Erweiterungs-Agents

Gilt für: Exchange Server 2013

Cmdlet-Erweiterungs-Agents sind Komponenten in Microsoft Exchange Server 2013, die bei der Ausführung von Exchange 2013-Cmdlets aufgerufen werden. Wie der Name sagt, erweitern Cmdlet-Erweiterungs-Agents die Funktionen der aufrufenden Cmdlets, indem sie ihnen beim Verarbeiten von Daten oder bei der Durchführung zusätzlicher Aktionen helfen, die auf den Anforderungen des Cmdlets basieren. Cmdlet-Erweiterungs-Agents sind für alle Serverrollen verfügbar.

Agents können die Funktionalität von Cmdlets der Exchange-Verwaltungsshell ändern, ersetzen oder erweitern. Ein Agent kann einen Wert für einen erforderlichen Parameter bereitstellen, der für einen Befehl nicht bereitgestellt wurde, einen von einem Benutzer bereitgestellten Wert außer Kraft setzen, während der Ausführung eines Cmdlets weitere Aktionen außerhalb des Cmdlet-Workflows durchführen usw.

Beispielsweise akzeptiert das Cmdlet New-Mailbox den Parameter Database , der die Postfachdatenbank angibt, in der ein neues Postfach erstellt werden soll. Wenn Sie in Microsoft Exchange Server 2007 beim Ausführen des Cmdlets New-Mailbox den Parameter Database nicht angeben, schlägt der Befehl fehl. In Exchange 2013 ruft das Cmdlet New-Mailbox den Mailbox Resources Management Agent jedoch auf, wenn das Cmdlet ausgeführt wird. Wenn der Database-Parameter nicht angegeben wird, bestimmt der Mailbox Resources Management Agent automatisch eine geeignete Postfachdatenbank, für die das neue Postfach erstellt werden soll, und fügt diesen Wert in den Database-Parameter ein.

Cmdlet-Erweiterungs-Agents können nur von Exchange 2013- und Microsoft Exchange Server 2010-Cmdlets aufgerufen werden. Exchange 2007-Cmdlets und Cmdlets anderer Microsoft- und Drittanbieterprodukte können keine Cmdlet-Erweiterungs-Agents aufrufen. Auch über Skripts können Cmdlet-Erweiterungs-Agents nicht direkt aufgerufen werden. Wenn Skripts jedoch Exchange 2013-Cmdlets enthalten, können diese Cmdlets die Cmdlet-Erweiterungs-Agents aufrufen.

Möchten Sie wissen, welche anderen Verwaltungsaufgaben es im Zusammenhang mit Cmdlet-Erweiterungs-Agents gibt? Weitere Informationen finden Sie unter Verwalten von Cmdlet-Erweiterungs-Agents.

Priorität von Agents

Die Priorität eines Agents bestimmt die Reihenfolge, in der der Agent aufgerufen wird, während ein Cmdlet ausgeführt wird. Ein Agent mit einer höheren Priorität( näher bei Null) wird zuerst aufgerufen. Die Priorität eines Agents wird wichtig, wenn mindestens zwei Agents versuchen, den Wert derselben Eigenschaft festzulegen. Der Agent mit der höchsten Priorität, der versucht, einen Eigenschaftswert festzulegen, ist erfolgreich, und alle nachfolgenden Versuche, dieselbe Eigenschaft durch Agents mit niedrigerer Priorität festzulegen, werden ignoriert. Wenn beispielsweise die Name-Eigenschaft für ein Objekt von einem Agent mit einer Priorität von 3 geändert wird und ein anderer Agent mit einer Priorität von 6 dasselbe Objekt ändert, wird die vom Agent mit der Priorität 6 vorgenommene Änderung ignoriert.

Wenn Sie verwenden Scripting agent möchten, um den Wert von Eigenschaften festzulegen, die möglicherweise von anderen Agents mit höherer Priorität festgelegt werden, haben Sie die folgenden Optionen:

  • Deaktivieren Sie den Agent, der die Eigenschaft zurzeit festlegt.

  • Legen Sie auf Scripting agent eine höhere Priorität fest als der vorhandene Agent, den Sie ersetzen möchten.

  • Lassen Sie die Prioritäten der Agents unverändert, und stellen Sie sicher, dass das Skript, das unter ausgeführt wird, Scripting agent den von den anderen Agents bereitgestellten Wert berücksichtigt.

Warnung

Das Ändern der Priorität oder das Ersetzen der Funktionalität eines integrierten Agents stellt einen erweiterten Vorgang dar. Stellen Sie sicher, dass Sie die Auswirkungen der Änderungen vollständig verstehen, die Sie vornehmen.

Weitere Informationen zum Ändern der Priorität eines Agents finden Sie unter Verwalten von Cmdlet-Erweiterungs-Agents.

Integrierte Agents

Exchange 2013 enthält mehrere Agents, die bei der Ausführung eines Cmdlets aufgerufen werden können. In der folgenden Tabelle werden die Agents, ihre Reihenfolge und die Information, ob die Agents standardmäßig aktiviert sind, aufgeführt. Auf einem Server mit Exchange 2013 können Sie keine Agents hinzufügen oder entfernen. Sie können jedoch verwendenScripting agent, um Windows PowerShell Skripts auszuführen, um die Funktionalität der Cmdlets zu erweitern, die es verwenden. Weitere Informationen zu Scripting agentfinden Sie weiter unten in diesem Thema im Abschnitt "Skript-Agent".

Sie können die meisten Agents aktivieren oder deaktivieren oder die Priorität der Agents ändern, wenn Sie die Funktionalität eines bestimmten Agents durch funktionen ersetzen möchten, die Sie in einem benutzerdefinierten Skript bereitstellen, das Sie mit Scripting agentaufrufen. Einige Agents können jedoch nicht deaktiviert werden. Agents, die nicht deaktiviert werden können, werden als System-Agents bezeichnet, und ihre IsSystem-Eigenschaft ist auf $Truefestgelegt. Die folgende Tabelle enthält Informationen zu Exchange 2013-Cmdlet-Erweiterungs-Agents, einschließlich System-Agents.

Die Konfiguration für Agents wird auf der Organisationsebene gespeichert. Wenn Sie einen Agent aktivieren, deaktivieren oder seine Priorität festlegen, legen Sie die entsprechende Agentkonfiguration für jeden Server in der Organisation fest. Die Ausnahme ist das Hinzufügen von Skripts zu .Scripting agent Sie müssen die Skripts auf jedem Server einzeln aktualisieren. Weitere Informationen zum Konfigurieren von Skripts für die Verwendung mit finden Scripting agentSie weiter unten in diesem Thema im Abschnitt "Skript-Agent".

Warnung

Wenn Sie die Priorität von Agents ändern oder Agents aktivieren oder deaktivieren, ohne vollständig zu verstehen, welche Aktionen jeder Agent ausführt und wie die Agents mit Exchange-Cmdlets interagieren, können unbeabsichtigte Auswirkungen auftreten. Stellen Sie vor dem Ändern einer Agentkonfiguration sicher, dass Sie die Änderungen und die gewünschten Ergebnisse vollständig verstehen, und überprüfen Sie, ob Ihr benutzerdefiniertes Skript Ihren Absichten gemäß arbeitet.

Cmdlet-Erweiterungs-Agents von Exchange 2013

Name des Agents Priorität Standardmäßig aktiviert System-Agent
Admin Audit Log agent 255 True Ja
Scripting agent 6 False Nein
Mailbox Resources Management agent 5 True Nein
OAB Resources Management agent 4 True Nein
Query Base DN agent 3 True Nein
Provisioning Policy agent 2 True Nein
Rus agent 1 True Nein
Mailbox Creation Time agent 0 True Nein

Skript-Agent

Sie können den Scripting agent Cmdlet-Erweiterungs-Agent in Exchange 2013 verwenden, um Ihre eigene Skriptlogik in die Ausführung von Exchange-Cmdlets einzufügen. Scripting agentMit können Sie Bedingungen hinzufügen, Werte außer Kraft setzen und Die Berichterstellung einrichten.

Warnung

Wenn Sie den Scripting agent Cmdlet-Erweiterungs-Agent aktivieren, wird der Agent jedes Mal aufgerufen, wenn ein Cmdlet auf einem Server mit Exchange 2013 ausgeführt wird. Dies umfasst nicht nur Cmdlets, die direkt von Ihnen in der Exchange-Verwaltungsshell ausgeführt werden, sondern auch Cmdlets, die von Exchange-Diensten und dem Exchange Admin Center (EAC) ausgeführt werden. Es wird dringend empfohlen, ihre Skripts und alle Änderungen, die Sie an der Konfigurationsdatei vornehmen, zu testen, bevor Sie die aktualisierte Konfigurationsdatei auf Ihre Exchange 2013-Server kopieren und den Cmdlet-Erweiterungs-Agent Scripting agent aktivieren.

Jedes Mal, wenn ein Exchange-Cmdlet ausgeführt wird, ruft das Cmdlet den Scripting agent Cmdlet-Erweiterungs-Agent auf. Wenn dieser Agent aufgerufen wird, überprüft das Cmdlet, ob Skripts konfiguriert sind, die vom Cmdlet aufgerufen werden können. Wenn ein Skript für ein Cmdlet ausgeführt werden soll, versucht das Cmdlet, alle im Skript definierten APIs aufzurufen. Die folgenden APIs sind verfügbar und werden in der folgenden Reihenfolge aufgerufen:

  1. ProvisionDefaultProperties: Diese API kann verwendet werden, um Werte von Eigenschaften für Objekte festzulegen, wenn sie erstellt werden. Wenn Sie einen Wert festlegen, wird dieser Wert an das Cmdlet zurückgegeben, und das Cmdlet legt den Wert für die Eigenschaft fest. Sie können Werte für Eigenschaften ausfüllen, wenn der Benutzer keinen Wert angegeben hat, oder Sie können den vom Benutzer angegebenen Wert außer Kraft setzen. Diese API berücksichtigt die Werte, die von Agents mit höherer Priorität festgelegt wurden. Der Scripting agent Cmdlet-Erweiterungs-Agent überschreibt die von Agents mit höherer Priorität festgelegten Werte nicht.

  2. UpdateAffectedIConfigurable: Diese API kann verwendet werden, um Werte von Eigenschaften für Objekte festzulegen, nachdem alle anderen Verarbeitungen abgeschlossen wurden, aber die Validate API noch nicht aufgerufen wurde. Diese API berücksichtigt die Werte, die von Agents mit höherer Priorität festgelegt wurden. Der Scripting agent Cmdlet-Erweiterungs-Agent überschreibt die von Agents mit höherer Priorität festgelegten Werte nicht.

  3. Überprüfen: Diese API kann verwendet werden, um die Werte für die Eigenschaften eines Objekts zu überprüfen, die vom Cmdlet festgelegt werden sollen. Diese API wird aufgerufen, kurz bevor ein Cmdlet mit dem Schreiben von Daten beginnt. Sie können Datenprüfungen konfigurieren, mit denen ein Cmdlet entweder erfolgreich ausgeführt werden oder fehlschlagen kann. Wenn ein Cmdlet die Datenprüfungen in dieser API besteht, darf das Cmdlet die Daten schreiben. Wenn das Cmdlet die Datenprüfungen nicht besteht, gibt es alle in dieser API definierten Fehler zurück.

  4. OnComplete: Diese API wird verwendet, nachdem alle Cmdlets verarbeitet wurden. Es kann verwendet werden, um Nachbearbeitungsaufgaben auszuführen, z. B. das Schreiben von Daten in eine externe Datenbank.

Hinweis

Der Scripting agent Cmdlet-Erweiterungs-Agent wird nicht aufgerufen, wenn Cmdlets mit dem Get Verb ausgeführt werden.

Konfigurationsdatei des Skript-Agents

Die Scripting agent Konfigurationsdatei enthält alle Skripts, die Scripting agent ausgeführt werden sollen. Skripts in der Konfigurationsdatei sind innerhalb von XML-Tags enthalten, die den Anfang und das Ende des Skripts und verschiedene Eingabeparameter definieren, die zum Übergeben von Daten an das Skript erforderlich sind. Skripts werden mithilfe der Windows PowerShell-Syntax geschrieben. Die Konfigurationsdatei ist eine XML-Datei, die die Elemente oder Attribute in der folgenden Tabelle verwendet.

Attribute der Skript-Agent-Konfigurationsdatei

Element Attribut Beschreibung
Configuration Nicht zutreffend Dieses Element enthält alle Skripts, die vom Scripting agent Cmdlet-Erweiterungs-Agent ausgeführt werden können. Das Feature Tag ist ein untergeordnetes Element dieses Tags.

Die Konfigurationsdatei enthält nur ein Configuration Tag.
Feature Nicht zutreffend Dieses Element enthält eine Reihe von Skripts, die sich auf eine Funktion beziehen. Jedes Skript, das ApiCall im untergeordneten Tag definiert ist, erweitert einen bestimmten Teil der Cmdlet-Ausführungspipeline. Dieses Tag enthält die Name Attribute und Cmdlets .

Unter dem Configuration Tag können mehrere Feature Tags vorhanden sein.
Name Dieses Attribut enthält den Namen der Funktion. Mithilfe dieses Attributs können Sie bei der Ermittlung helfen, welche Funktion von den im Tag enthaltenen Skripts erweitert wird.
Cmdlets Dieses Attribut enthält eine Liste der Exchange-Cmdlets, von denen die Skripts in dieser Funktionserweiterung verwendet werden. Mehrere Cmdlets können durch Kommata getrennt angegeben werden.
ApiCall Nicht zutreffend Dieses Element enthält Skripts, die einen Teil der Cmdlet-Ausführungspipeline erweitern können. Jedes Skript wird durch den API-Aufrufnamen in der Cmdlet-Ausführungspipeline definiert, die dieses erweitert. Nachfolgend finden Sie die API-Namen, die ausgeführt werden können:
  • ProvisionDefaultProperties
  • UpdateAffectedIConfigurable
  • Validate
  • OnComplete
Name Dieses Attribut umfasst den Namen des API-Aufrufs, der die Cmdlet-Ausführungspipeline erweitert.
Common Nicht zutreffend Dieses Element enthält Funktionen, die von einem beliebigen Skript in der Konfigurationsdatei verwendet werden können.

Jeder Exchange 2013-Server enthält die Datei ScriptingAgentConfig.xml.sample im %ExchangeInstallPath%CmdletExtensionAgents Ordner. Diese Datei muss auf jedem Exchange 2013-Server in "ScriptingAgentConfig.xml" umbenannt werden, wenn Sie den Cmdlet-Erweiterungs-Agent "Skript-Agent" aktivieren. Die Beispielkonfigurationsdatei enthält Beispielskripts, mit denen Sie herausfinden können, wie Skripts zur Konfigurationsdatei hinzugefügt werden.

Nachdem Sie ein Skript zur Konfigurationsdatei hinzugefügt oder eine Änderung an der Konfigurationsdatei vorgenommen haben, müssen Sie die Datei auf jedem Exchange 2013-Server im Unternehmen aktualisieren. Dies muss geschehen, um sicherzustellen, dass jeder Server eine aktuelle Version der Skripts enthält, die vom Scripting Agent Cmdlet-Erweiterungs-Agent ausgeführt werden.

Einige Zeichen, die in der Regel in Skripts verwendet werden, haben auch eine besondere Bedeutung in XML. Um diese Zeichen in Ihrem Skript zu verwenden, verwenden Sie Escapesequenzen. Die folgenden Zeichen verwenden beispielsweise eine Escapesequenz:

  • Verwenden Sie anstelle eines Größer-als-Zeichens ( > ) >
  • Anstelle eines Kleiner-als-Zeichens ( < ) verwenden Sie $lt;
  • Verwenden Sie anstelle eines kaufmännischen und -Zeichens ( & ) &amp;

Aktivieren des Skript-Agents

Der Scripting agent Cmdlet-Erweiterungs-Agent ist standardmäßig deaktiviert. Wenn Sie aktivieren Scripting agent, wird der Agent für die gesamte Exchange 2013-Organisation aktiviert. Bevor Sie aktivieren Scripting agent, überprüfen Sie, ob die Scripting agent Konfigurationsdatei ordnungsgemäß umbenannt und mit Ihren Skripts auf jedem Exchange 2013-Server aktualisiert wurde. Sie erhalten bei jeder Ausführung eines Cmdlets eine Fehlermeldung, wenn Sie die Konfigurationsdatei nicht ordnungsgemäß umbenennen oder eine Konfigurationsdatei von einem anderen Exchange 2013-Server auf diesen Computer kopieren.

Um zu Scripting agentaktivieren, müssen Sie die folgenden Schritte ausführen:

  1. Benennen Sie die Datei ScriptingAgentConfig.xml.sample in %ExchangeInstallPath%Bin\CmdletExtensionAgents in in ScriptingAgentConfig.xml auf jedem Exchange 2013-Server in Ihrer Organisation um.

    Hinweis

    Sie können die Konfigurationsdatei von einem Exchange 2013-Server auf andere Exchange 2013-Server kopieren. Stellen Sie sicher, dass Sie die zu kopierende Konfigurationsdatei aktualisieren, bevor Sie sie kopieren.

  2. Fügen Sie Ihr Skript auf jedem Exchange 2013-Server im Unternehmen zur umbenannten Konfigurationsdatei hinzu.

  3. Aktivieren Sie den Scripting agent Cmdlet-Erweiterungs-Agent. Weitere Informationen zum Aktivieren von Cmdlet-Erweiterungs-Agents finden Sie unter Verwalten von Cmdlet-Erweiterungs-Agents.

Skript-Agent-Priorität

Standardmäßig wird der Scripting agent Cmdlet-Erweiterungs-Agent nach jedem anderen Agent ausgeführt, mit Ausnahme des Scripting agent Agents. Wenn Sie möchten, dass ein skript, das Sie erstellt haben, einen vorhandenen Agent ersetzen soll, müssen Sie entweder den anderen Agent deaktivieren oder die Priorität eines der agents ändern, sodass der Scripting agent Cmdlet-Erweiterungs-Agent zuerst ausgeführt wird. Weitere Informationen zum Deaktivieren oder Ändern der Priorität von Agents finden Sie unter Verwalten von Cmdlet-Erweiterungs-Agents.