Agentes de extensión de cmdlet

Se aplica a: Exchange Server 2013

Los agentes de extensión de cmdlet son componentes de Microsoft Exchange Server 2013 que invocan los cmdlets de Exchange 2013 cuando se ejecutan los cmdlets. Como su nombre indica, los agentes de extensión de cmdlet asisten en el procesamiento de datos o la realización de acciones adicionales en función de los requisitos de los cmdlets, a fin de extender las capacidades de los cmdlets que los invocan. Los agentes de extensión de cmdlet están disponibles en cualquier rol de servidor.

Los agentes pueden modificar, reemplazar o ampliar la funcionalidad de los cmdlets del Shell de administración de Exchange. Una agente puede proporcionar un valor para un parámetro requerido que no se proporciona en un comando, anular un valor proporcionado por un usuario, realizar otras acciones fuera del flujo de trabajo del cmdlet durante la ejecución del cmdlet y más.

Por ejemplo, el cmdlet New-Mailbox acepta el parámetro Database que especifica la base de datos de buzón en la que se va a crear un nuevo buzón. En Microsoft Exchange Server 2007, si no especifica el parámetro Database al ejecutar el cmdlet New-Mailbox, se produce un error en el comando. Sin embargo, en Exchange 2013, el cmdlet New-Mailbox invoca al Mailbox Resources Management agente cuando se ejecuta el cmdlet. Si no se especifica el parámetro Database , el Mailbox Resources Management agente determina automáticamente una base de datos de buzón adecuada en la que crear el nuevo buzón e inserta ese valor en el parámetro Database .

Los agentes de extensión de cmdlet solo los puede invocar los cmdlets Exchange 2013 y Microsoft Exchange Server 2010. Los cmdlets Exchange 2007 y los cmdlets de otros productos de Microsoft y de terceros pueden invocar agentes de extensión de cmdlet. Los scripts tampoco pueden invocar a los agentes de extensión de cmdlet directamente. Sin embargo, si los scripts contienen cmdlets de Exchange 2013, esos cmdlets siguen llamando a los agentes de extensión de cmdlet.

¿Está buscando tareas de administración relacionadas con los agentes de extensión de cmdlet? Consulte Administrar los agentes de extensión de cmdlet.

Prioridad de agente

La prioridad de un agente determina el orden en que se invoca al agente durante la ejecución de un cmdlet. En primer lugar, se invoca a un agente que tiene una prioridad más alta, más cerca de cero. La prioridad de un agente adquiere importancia cuando dos o más agentes intentan establecer el valor de la misma propiedad. Prevalece el agente con la prioridad más alta que intenta establecer el valor de una propiedad y se ignoran todos los intentos subsiguientes para establecer la misma prioridad por parte de agentes con una prioridad inferior. Por ejemplo, si un agente con una prioridad de 3 modifica la propiedad Name de un objeto y otro agente con una prioridad de 6 modifica el mismo objeto, se ignora la modificación que realizó el agente con una prioridad de 6.

Si desea usar Scripting agent para establecer el valor de las propiedades que pueden establecer otros agentes de mayor prioridad, tiene las siguientes opciones:

  • Deshabilitar al agente que actualmente establece la propiedad.

  • Establezca en Scripting agent una prioridad mayor que el agente existente que desea reemplazar.

  • Mantenga las prioridades de los agentes igual y asegúrese de que el script que se ejecuta en Scripting agent respeta el valor proporcionado por los demás agentes.

Advertencia

Cambiar la prioridad o reemplazar la funcionalidad de un agente integrado es una operación avanzada. Asegúrese de comprender por completo los cambios que realiza.

Para obtener más información acerca de cómo modificar la prioridad de un agente, consulte Administrar los agentes de extensión de cmdlet.

Agentes integrados

Exchange 2013 incluye varios agentes que se pueden invocar cuando se ejecuta un cmdlet. La siguiente tabla enumera los agentes y el orden de estos, e indica si los agentes están habilitados de forma predeterminada. No puede agregar ni quitar agentes en o desde un servidor que ejecuta Exchange 2013. Sin embargo, puede usar Scripting agent para ejecutar scripts de Windows PowerShell para ampliar la funcionalidad de los cmdlets que lo usan. Para obtener más información sobre Scripting agent, vea la sección "Agente de scripting" más adelante en este tema.

Puede habilitar o deshabilitar la mayoría de los agentes o cambiar la prioridad de los agentes si desea reemplazar la funcionalidad de un agente específico por la funcionalidad que proporcione en un script personalizado al que llame mediante Scripting agent. Sin embargo, algunos agentes no se pueden deshabilitar. Los agentes que no se pueden deshabilitar se denominan agentes del sistema y tienen su propiedad IsSystem establecida en $True. La siguiente tabla ofrece información acerca de los agentes de extensión del cmdlet Exchange 2013, incluyendo agentes del sistema.

La configuración de los agentes se almacena en el nivel de la organización. Al habilitar o deshabilitar un agente, o al establecer su prioridad, se establece la configuración de dicho agente en todos los servidores de la organización. La excepción es agregar scripts a Scripting agent. Debe actualizar los scripts en cada servidor por separado. Para obtener más información sobre cómo configurar scripts para su uso con Scripting agent, vea la sección "Agente de scripting" más adelante en este tema.

Advertencia

Si no comprende totalmente las acciones que realiza cada agente y la forma en que interactúan con los cmdlets de Exchange, es posible que la modificación de la prioridad de los agentes, o la habilitación o deshabilitación de los agentes ocasionen efectos no deseados. Antes de modificar la configuración de un agente, asegúrese de comprender perfectamente los cambios y resultados que desea y de comprobar que el script personalizado funcione de la forma esperada.

Agentes de extensión de cmdlet de Exchange 2013

Nombre del agente Prioridad Habilitado de forma predeterminada Agente del 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 de scripting

Puede usar el agente de extensión de Scripting agent cmdlets en Exchange 2013 para insertar su propia lógica de scripting en la ejecución de cmdlets de Exchange. Scripting agentCon , puede agregar condiciones, invalidar valores y configurar informes.

Advertencia

Al habilitar el agente de extensión de Scripting agent cmdlet, se invoca al agente cada vez que se ejecuta un cmdlet en un servidor que ejecuta Exchange 2013. Esto incluye no solo los cmdlets ejecutados directamente por usted en el Shell de administración de Exchange, sino también los cmdlets que ejecutan los servicios de Exchange y el Centro de administración de Exchange (EAC). Se recomienda encarecidamente probar los scripts y los cambios realizados en el archivo de configuración antes de copiar el archivo de configuración actualizado en los servidores de Exchange 2013 y habilitar el agente de extensión de Scripting agent cmdlet.

Cada vez que se ejecuta un cmdlet de Exchange, el cmdlet invoca al agente de extensión de Scripting agent cmdlet. Cuando se invoca a este agente, el cmdlet verifica si la configuración de alguna de las secuencias de comandos indica que el cmdlet la debe invocar. Si se debe ejecutar una secuencia de comandos para un cmdlet, el cmdlet trata de invocar a cualquier API definida en la secuencia de comandos. Las siguientes API están disponibles y se las invoca en el siguiente orden:

  1. ProvisionDefaultProperties: esta API se puede usar para establecer valores de propiedades en objetos cuando se crean. Cuando establece un valor, este valor se envía al cmdlet y el cmdlet establece el valor en la propiedad. Puede completar los valores en las propiedades si el usuario no especificó un valor o puede reemplazar el valor especificado por el usuario. Esta API respeta los valores establecidos por agentes que tienen prioridad mayor. El Scripting agent agente de extensión de cmdlet no sobrescribirá los valores establecidos por los agentes de mayor prioridad.

  2. UpdateAffectedIConfigurable: esta API se puede usar para establecer valores de propiedades en objetos una vez completado el resto del procesamiento, pero aún no se ha invocado la Validate API. Esta API respeta los valores establecidos por agentes que tienen prioridad mayor. El Scripting agent agente de extensión de cmdlet no sobrescribirá los valores establecidos por los agentes de mayor prioridad.

  3. Validar: esta API se puede usar para validar los valores de las propiedades de un objeto que el cmdlet está a punto de establecer. Se llama a esta API justo antes de que el cmdlet escriba los datos. Puede configurar comprobaciones de validación que permitan o no que el cmdlet funcione correctamente. Si un cmdlet tiene un resultado satisfactorio en las comprobaciones de validación de esta API, el cmdlet puede escribir los datos. Si el cmdlet no tiene un resultado satisfactorio en las comprobaciones de validación, regresa todos los errores definidos por esta API.

  4. OnComplete: esta API se usa una vez completado todo el procesamiento de cmdlets. Se puede usar para realizar tareas posteriores al procesamiento, como escribir datos en una base de datos externa.

Nota:

El Scripting agent agente de extensión de cmdlet no se invoca cuando se ejecutan cmdlets con el Get verbo .

Archivo de configuración del agente de scripting

El Scripting agent archivo de configuración contiene todos los scripts que desea Scripting agent que se ejecuten. Las secuencias de comandos del archivo de configuración están contenidas dentro de etiquetas XML que definen el comienzo y el fin de la secuencia de comandos y varios parámetros de entrada necesarios para transmitir los datos a la secuencia de comandos. Las secuencias de comandos se escriben mediante la sintaxis de Windows PowerShell. El archivo de configuración es un archivo XML que usa los elementos o atributos de la siguiente tabla.

Atributos del archivo de configuración del agente de scripting

Elemento Atributo Description
Configuration No aplicable Este elemento contiene todos los scripts que puede ejecutar el agente de extensión de Scripting agent cmdlet. La Feature etiqueta es un elemento secundario de esta etiqueta.

Solo hay una Configuration etiqueta en el archivo de configuración.
Feature No aplicable Este elemento contiene un conjunto de secuencias de comandos relacionados con una característica. Cada script, definido en la ApiCall etiqueta secundaria, extiende una parte específica de la canalización de ejecución del cmdlet. Esta etiqueta contiene los Name atributos y Cmdlets .

Puede haber varias Feature etiquetas bajo la Configuration etiqueta .
Name Este atributo contiene el nombre de la característica. Use este atributo para ayudar a identificar qué característica es extendida por las secuencias de comandos de esta etiqueta.
Cmdlets Este atributo contiene una lista de los cmdlets Exchange que usa el conjunto de scripts en esta extensión de la característica. Puede especificar varios cmdlets al separar cada uno de ellos con una coma.
ApiCall No aplicable Este elemento contiene secuencias de comandos que pueden extender una parte de la canalización de ejecución del cmdlet. Cada secuencia de comandos está definida por el nombre de llamada API de la canalización de ejecución de cmdlet que está extendiendo. Los siguientes son los nombres de API que se pueden extender:
  • ProvisionDefaultProperties
  • UpdateAffectedIConfigurable
  • Validate
  • OnComplete
Name Este atributo incluye el nombre de la llamada API que está extendiendo la canalización de ejecución de cmdlet.
Common No aplicable Este elemento contiene funciones que puede usar cualquier secuencia de comandos del archivo de configuración.

Cada servidor de Exchange 2013 incluye el archivo ScriptingAgentConfig.xml.sample en la %ExchangeInstallPath%CmdletExtensionAgents carpeta . Se le debe cambiar el nombre a este archivo por el nombre ScriptingAgentConfig.xml en cada servidor Exchange 2013 si habilita el agente de extensión de cmdlet del agente de scripting. El archivo de configuración de muestra contiene secuencias de comandos de muestra que puede usar para ayudarle a comprender cómo agregar secuencias de comandos al archivo de configuración.

Después de agregar una secuencia de comandos al archivo de configuración, o después de hacer un cambio en el archivo de configuración, debe actualizar el archivo en cada servidor Exchange 2013 de la organización. Esto debe hacerse para asegurarse de que cada servidor contiene una versión actualizada de los scripts que ejecuta el agente de extensión de Scripting Agent cmdlet.

Algunos caracteres que se usan normalmente en las secuencias de comandos también tienen un significado especial en XML. Para usar estos caracteres en la secuencia de comandos, use secuencias de escape. Por ejemplo, los siguientes caracteres usan una secuencia de escape:

  • En lugar de un signo mayor que ( ), use . >>
  • En lugar de un signo menor que ( < ), use $lt;
  • En lugar de una y comercial ( & ), use . &amp;

Habilitación del agente de scripting

El Scripting agent agente de extensión de cmdlet está deshabilitado de forma predeterminada. Al habilitar Scripting agent, el agente está habilitado para toda la organización de Exchange 2013. Antes de habilitar Scripting agent, compruebe que el Scripting agent archivo de configuración se ha cambiado de nombre y actualizado correctamente con los scripts en cada servidor de Exchange 2013. Recibirá un mensaje de error cada vez que un cmdlet se ejecute si no ha cambiado el nombre del archivo de configuración correctamente o copiado un archivo de configuración en este equipo desde otro servidor Exchange 2013.

Para habilitar Scripting agent, debe hacer lo siguiente:

  1. Cambie el nombre del archivo ScriptingAgentConfig.xml.sample en %ExchangeInstallPath%Bin\CmdletExtensionAgents a ScriptingAgentConfig.xml en cada servidor de Exchange 2013 de su organización.

    Nota:

    Puede copiar el archivo de configuración de un servidor Exchange 2013 a otros servidores Exchange 2013. Asegúrese de actualizar el archivo de configuración que desea copiar antes de copiarlo.

  2. Agregue la secuencia de comandos al archivo de configuración que tiene el nombre cambiado en cada servidor Exchange 2013 de la organización.

  3. Habilite el agente de extensión de Scripting agent cmdlet. Para obtener más información sobre cómo habilitar agentes de extensión de cmdlet, consulte Administrar los agentes de extensión de cmdlet.

Prioridad de agente de scripting

De forma predeterminada, el agente de extensión de Scripting agent cmdlet se ejecuta después de cada otro agente, con la excepción del Scripting agent agente. Si desea que un script que creó para reemplazar un agente existente, deshabilite el otro agente o cambie la prioridad de cualquiera de ellos para que el agente de extensión de Scripting agent cmdlet se ejecute primero. Para obtener más información acerca de cómo deshabilitar o cambiar la prioridad de los agentes, consulte Administrar los agentes de extensión de cmdlet.