Agenti di estensione di cmdlet

Si applica a: Exchange Server 2013

Gli agenti di estensione cmdlet sono componenti di Microsoft Exchange Server 2013 richiamati dai cmdlet di Exchange 2013 quando vengono eseguiti. Come suggerisce il nome, gli agenti di estensione cmdlet estendono le funzionalità dei cmdlet che li richiamano semplificando l'elaborazione dei dati o eseguendo ulteriori azioni in base ai requisiti del cmdlet. Gli agenti di estensione cmdlet sono disponibili in qualsiasi ruolo del server.

Gli agenti possono modificare, sostituire o estendere le funzionalità dei cmdlet di Exchange Management Shell. Un agente può fornire un valore per un parametro necessario non fornito sul comando, sostituire un valore fornito da un utente, eseguire altre azioni all'esterno del flusso di lavoro del cmdlet durante l'esecuzione di un cmdlet o molto altro.

Ad esempio, il cmdlet New-Mailbox accetta il parametro Database che specifica il database delle cassette postali in cui creare una nuova cassetta postale. In Microsoft Exchange Server 2007, se non si specifica il parametro Database quando si esegue il cmdlet New-Mailbox, il comando ha esito negativo. In Exchange 2013, tuttavia, il cmdlet New-Mailbox richiama l'agente Mailbox Resources Management quando il cmdlet viene eseguito. Se il parametro Database non è specificato, l'agente Mailbox Resources Management determina automaticamente un database di cassette postali appropriato in cui creare la nuova cassetta postale e inserisce tale valore nel parametro Database .

Gli agenti di estensione cmdlet possono essere richiamati solo dai cmdlet di Exchange 2013 e Microsoft Exchange Server 2010. I cmdlet di Exchange 2007 e quelli forniti da altri prodotti Microsoft e di terze parti non possono richiamare gli agenti di estensione cmdlet. Anche gli script non possono richiamare direttamente gli agenti di estensione cmdlet. Tuttavia, se gli script contengono i cmdlet di Exchange 2013, tali cmdlet continuano a chiamare gli agenti di estensione cmdlet.

Per informazioni sulle attività di gestione relative agli agenti di estensione cmdlet? vedere Gestire gli agenti di estensione cmdlet.

Priorità dell'agente

La priorità dell'agente determina l'ordine in cui gli agenti vengono richiamati durante l'esecuzione di un cmdlet. L'agente con la priorità superiore, più vicina a 0, viene richiamato per primo. La priorità di un agente diventa importante quando due o più agenti tentano di impostare il valore della stessa proprietà. L'agente con la priorità più alta che tenta di impostare un valore della proprietà riesce nell'operazione e tutti i tentativi successivi di impostare la stessa proprietà da parte di agenti con priorità più bassa, vengono ignorati. Ad esempio, se la proprietà Name su un oggetto viene modificata da un agente con priorità 3 e un altro agente con priorità 6 modifica lo stesso oggetto, la modifica apportata dall'agente con priorità 6 viene ignorata.

Se si vuole usare Scripting agent per impostare il valore delle proprietà che potrebbero essere impostate da altri agenti con priorità più alta, sono disponibili le opzioni seguenti:

  • Disabilitare l'agente che attualmente imposta la proprietà.

  • Impostare su Scripting agent una priorità superiore all'agente esistente che si vuole sostituire.

  • Mantenere le priorità degli agenti uguali e assicurarsi che lo script eseguito sotto Scripting agent rispetti il valore fornito dagli altri agenti.

Avviso

La modifica della priorità o la sostituzione della funzionalità di un agente incorporato è un'operazione avanzata. Assicurarsi di essere pienamente consapevoli delle modifiche che verranno apportate.

Per ulteriori informazioni sulla modifica della priorità di un agente, vedere Gestire gli agenti di estensione cmdlet.

Agenti incorporati

Exchange 2013 comprende numerosi agenti che possono essere richiamati quando viene eseguito un cmdlet. Nella tabella seguente sono elencati gli agenti nell'ordine esatto ed è indicato se gli agenti sono abilitati per impostazione predefinita. Non è possibile aggiungere agenti o rimuoverli da un server Exchange 2013. È tuttavia possibile usare Scripting agent per eseguire script Windows PowerShell per estendere la funzionalità dei cmdlet che lo usano. Per altre informazioni su Scripting agent, vedere la sezione "Agente di scripting" più avanti in questo argomento.

È possibile abilitare o disabilitare la maggior parte degli agenti o modificare la priorità degli agenti se si desidera sostituire la funzionalità di un agente specifico con la funzionalità fornita in uno script personalizzato chiamato tramite Scripting agent. Tuttavia, alcuni agenti non possono essere disabilitati. Gli agenti che non possono essere disabilitati vengono chiamati agenti di sistema e la relativa proprietà IsSystem è impostata su $True. Nella tabella seguente vengono fornite informazioni sugli agenti di estensione cmdlet Exchange 2013, inclusi gli agenti di sistema.

La configurazione per gli agenti viene memorizzata a livello di organizzazione. Quando si abilita o si disabilita un agente o si imposta la priorità, è necessario impostare la configurazione dell'agente in ogni server dell'organizzazione. L'eccezione consiste nell'aggiunta di script all'oggetto Scripting agent. È necessario aggiornare gli script in ogni server singolarmente. Per altre informazioni sulla configurazione degli script da usare con Scripting agent, vedere la sezione "Agente di scripting" più avanti in questo argomento.

Avviso

La modifica della priorità degli agenti o l'abilitazione o disabilitazione degli agenti, può causare conseguenze indesiderate se non si comprende completamente l'attività di ogni agente e la loro interazione con i cmdlet di Exchange. Prima di modificare la configurazione di ogni agente, assicurarsi di essere completamente consapevoli delle modifiche e dei risultati desiderati e di verificare che lo script personalizzato funzioni correttamente.

Agenti di estensione cmdlet di Exchange 2013

Nome agente Priorità Abilitato per impostazione predefinita Agente di sistema
Admin Audit Log agent 255 True
Scripting agent 6 False No
Mailbox Resources Management agent 5 True No
OAB Resources Management agent 4 True No
Query Base DN agent 3 True No
Provisioning Policy agent 2 True No
Rus agent 1 True No
Mailbox Creation Time agent 0 True No

Agente di script

È possibile usare l'agente di estensione cmdlet Scripting agent in Exchange 2013 per inserire la logica di scripting personalizzata nell'esecuzione dei cmdlet di Exchange. Scripting agentUsando , è possibile aggiungere condizioni, eseguire l'override dei valori e configurare la creazione di report.

Avviso

Quando si abilita l'agente Scripting agent di estensione cmdlet, l'agente viene richiamato ogni volta che viene eseguito un cmdlet in un server che esegue Exchange 2013. Sono inclusi non solo i cmdlet eseguiti direttamente dall'utente in Exchange Management Shell, ma anche i cmdlet eseguiti dai servizi di Exchange e dall'interfaccia di amministrazione di Exchange. È consigliabile testare gli script e le modifiche apportate al file di configurazione prima di copiare il file di configurazione aggiornato nei server Exchange 2013 e abilitare l'agente di estensione cmdlet Scripting agent .

Ogni volta che viene eseguito un cmdlet di Exchange, il cmdlet richiama l'agente di estensione del Scripting agent cmdlet. Quando questo agente viene richiamato, il cmdlet verifica se nessuno script è configurato per essere richiamato dal cmdlet. Se uno script deve essere eseguito per un cmdlet, il cmdlet tenta di richiamare tutte le API definite nello script. Sono disponibili le seguenti API, che vengono richiamate nell'ordine seguente:

  1. ProvisionDefaultProperties: questa API può essere usata per impostare i valori delle proprietà sugli oggetti quando vengono creati. Quando si imposta un valore, quel valore viene restituito al cmdlet e il cmdlet imposta il valore sulla proprietà. È possibile inserire i valori sulle proprietà se l'utente non ha specificato un valore oppure è possibile sovrascrivere il valore specificato dall'utente. Questo API rispetta i valori impostati dagli agenti di più elevata priorità. L'agente Scripting agent di estensione cmdlet non sovrascriverà i valori impostati dagli agenti con priorità più alta.

  2. UpdateAffectedIConfigurable: questa API può essere usata per impostare i valori delle proprietà sugli oggetti dopo il completamento di tutte le altre elaborazioni, ma l'API Validate non è ancora stata richiamata. Questo API rispetta i valori impostati dagli agenti di più elevata priorità. L'agente Scripting agent di estensione cmdlet non sovrascriverà i valori impostati dagli agenti con priorità più alta.

  3. Convalida: questa API può essere usata per convalidare i valori nelle proprietà di un oggetto che stanno per essere impostate dal cmdlet. Questo API viene chiamato subito prima che un cmdlet scriva qualsiasi dato. È possibile configurare le verifiche di convalida che consentono ad un cmdlet di riuscire o meno. Se un cmdlet passa le verifiche di convalida in questo API, al cmdlet viene consentito di scrivere i dati. Se il cmdlet non passa le verifiche di convalida, restituisce tutti gli errori definiti in questo API.

  4. OnComplete: questa API viene usata al termine dell'elaborazione di tutti i cmdlet. Può essere utilizzato per eseguire le attività di postelaborazione come scrivere dati su un database esterno.

Nota

L'agente Scripting agent di estensione cmdlet non viene richiamato quando vengono eseguiti i cmdlet con il Get verbo.

File di configurazione dell'agente di script

Il Scripting agent file di configurazione contiene tutti gli script da Scripting agent eseguire. Gli script nel file di configurazione sono contenuti all'interno dei tag XML che definiscono l'inizio e la fine dello script e i vari parametri di input necessari per passare i dati allo script. Gli script vengono scritti utilizzando la sintassi PowerShell di Windows. Il file di configurazione è un file XML che utilizza gli elementi o gli attributi nella seguente tabella.

Attributi del file di configurazione dell'agente di script

Elemento Attributo Descrizione
Configuration Non applicabile Questo elemento contiene tutti gli script che l'agente di estensione cmdlet Scripting agent può eseguire. Il Feature tag è un elemento figlio di questo tag.

Nel file di configurazione è presente un Configuration solo tag.
Feature Non applicabile Questo elemento contiene un gruppo di script relativo ad una funzionalità. Ogni script, definito nel ApiCall tag figlio, estende una parte specifica della pipeline di esecuzione del cmdlet. Questo tag contiene gli Name attributi e Cmdlets .

Nel tag possono essere presenti più Feature tag Configuration .
Name Questa proprietà contiene il nome della funzionalità. Utilizzare questo attributo per contribuire ad identificare quale funzionalità viene estesa dagli script contenuti all'interno del tag.
Cmdlets Questo attributo contiene un elenco dei cmdlet Exchange che verranno utilizzati dal gruppo di script di questa estensione di funzionalità. È possibile specificare più cmdlet separando ciascuno con una virgola.
ApiCall Non applicabile Questo elemento contiene gli script che possono estendere una parte della pipeline di esecuzione del cmdlet. Ciascuno script viene definito dal nome di chiamata API nella pipeline di esecuzione del cmdlet in estensione. I nomi API che possono essere estesi sono i seguenti:
  • ProvisionDefaultProperties
  • UpdateAffectedIConfigurable
  • Validate
  • OnComplete
Name Questo attributo include il nome della chiamata API che sta estendendo la pipeline di esecuzione del cmdlet.
Common Non applicabile Questo elemento contiene delle funzioni che qualsiasi script del file di configurazione può utilizzare.

Ogni server Exchange 2013 include il file ScriptingAgentConfig.xml.sample nella %ExchangeInstallPath%CmdletExtensionAgents cartella . Questo file deve essere rinominato ScriptingAgentConfig.xml su ogni server Exchange 2013 se si abilita l'agente di estensione del cmdlet Agente di script. Il file di configurazione di esempio contiene script di esempio che è possibile utilizzare per contribuire a comprendere in che modo aggiungere gli script al file di configurazione.

Dopo aver aggiunto uno script al file di configurazione, oppure se si apporta una modifica al file di configurazione, è necessario aggiornarlo su ogni server Exchange 2013 della propria organizzazione. Questa operazione deve essere eseguita per assicurarsi che ogni server contenga una versione aggiornata degli script eseguiti dall'agente di estensione cmdlet Scripting Agent .

Alcuni caratteri normalmente utilizzati negli script hanno anche un significato particolare in XML. Per utilizzare questi caratteri nello script, utilizzare le sequenze di escape. Ad esempio, i seguenti caratteri utilizzano una sequenza di escape:

  • Anziché un segno maggiore di ( > ), usare >
  • Anziché un segno minore di ( < ), usare $lt;
  • Anziché una e commerciale ( & ), usare &amp;

Abilitazione dell'agente di script

L'agente Scripting agent di estensione cmdlet è disabilitato per impostazione predefinita. Quando si abilita Scripting agent, l'agente viene abilitato per l'intera organizzazione di Exchange 2013. Prima di abilitare Scripting agent, verificare che il Scripting agent file di configurazione sia stato rinominato e aggiornato correttamente con gli script in ogni server Exchange 2013. Si riceverà un messaggio di errore ogni volta che un cmdlet viene eseguito se il file di configurazione non viene rinominato correttamente o se viene copiato sul computer da un server Exchange 2013 diverso.

Per abilitare Scripting agent, è necessario eseguire le operazioni seguenti:

  1. Rinominare il file ScriptingAgentConfig.xml.sample in in ScriptingAgentConfig.xml %ExchangeInstallPath%Bin\CmdletExtensionAgents in ogni server Exchange 2013 dell'organizzazione.

    Nota

    È possibile copiare il file di configurazione da un server Exchange 2013 ad altri serverExchange 2013 . Accertarsi di aggiornare il file di configurazione che si desidera copiare, prima di copiarlo.

  2. Aggiungere lo script al file di configurazione rinominato su ogni server Exchange 2013 nella propria organizzazione.

  3. Abilitare l'agente di estensione cmdlet Scripting agent . Per ulteriori informazioni sugli agenti di estensione dei cmdlet, vedere Gestire gli agenti di estensione cmdlet.

Priorità dell'agente di script

Per impostazione predefinita, l'agente Scripting agent dell'estensione cmdlet viene eseguito dopo ogni altro agente, ad eccezione dell'agente Scripting agent . Se si vuole creare uno script per sostituire un agente esistente, è necessario disabilitare l'altro agente o modificare la priorità di uno degli agenti in modo che l'agente di estensione cmdlet Scripting agent venga eseguito per primo. Per ulteriori informazioni sulla disabiltazione o la modifica della priorità degli agenti, vedere Gestire gli agenti di estensione cmdlet.