了解脚本代理

 

适用于: Exchange Server 2010 SP2, Exchange Server 2010 SP3

上一次修改主题: 2015-03-09

可以使用 Microsoft Exchange Server 2010 中的脚本代理 cmdlet 扩展代理将自己的脚本逻辑插入到 Exchange cmdlet 的执行中。通过使用脚本代理,可以添加条件、覆盖值并设置报告。

警告

启用了脚本代理 cmdlet 扩展代理时,每次在运行 Exchange 2010 的服务器上运行 cmdlet 时,都会调用该代理。这不仅包括您在 Exchange 命令行管理程序中直接运行的 cmdlet,还包括 Exchange 服务、Exchange 管理控制台 (EMC) 和 Exchange 控制面板 (ECP) 运行的 cmdlet。强烈建议您在将更新的配置文件复制到 Exchange 2010 服务器并启用脚本代理 cmdlet 扩展代理之前,测试您的脚本以及对配置文件进行的任何更改。

每次运行 Exchange cmdlet 时,cmdlet 都会调用脚本代理 cmdlet 扩展代理。当调用此代理时,cmdlet 会检查是否有任何脚本配置为由 cmdlet 进行调用。如果应为某个 cmdlet 运行某个脚本,则该 cmdlet 会尝试调用该脚本中定义的任何 API。以下 API 可供使用,并按以下顺序进行调用:

  1. ProvisionDefaultProperties   此 API 可以用于在创建对象时设置对象的属性值。当设置某个值时,该值会返回给 cmdlet,而 cmdlet 会对属性设置值。您可以在用户未指定值时对属性填充值,也可以覆盖用户指定的值。此 API 会采用更高优先级代理设置的值。脚本代理 cmdlet 扩展代理不会覆盖由更高优先级代理设置的值。

  2. UpdateAffectedIConfigurable   此 API 可以用于在完成了所有其他处理(但是尚未调用 Validate API)之后,设置对象的属性值。此 API 会采用更高优先级代理设置的值。脚本代理 cmdlet 扩展代理不会覆盖由更高优先级代理设置的值。

  3. Validate   此 API 可以用于验证将由 cmdlet 设置的对象的属性值。此 API 就在 cmdlet 写入任何数据之前进行调用。可以配置允许 cmdlet 成功或失败的验证检查。如果某个 cmdlet 通过此 API 中的验证检查,则允许该 cmdlet 写入数据。如果 cmdlet 未能通过验证检查,则会返回此 API 中定义的任何错误。

  4. OnComplete   此 API 在所有 cmdlet 处理都完成之后使用。它可以用于执行处理后任务,如将数据写入外部数据库。

备注

当运行带有 Get 动词的 cmdlet 时,不会调用脚本代理 cmdlet 扩展代理。此外,该代理不会在运行边缘传输服务器角色的 Exchange 服务器上运行,因为该服务器角色不支持 cmdlet 扩展代理。

脚本代理是若干个 cmdlet 扩展代理之一。有关 cmdlet 扩展代理的详细信息,请参阅了解 Cmdlet 扩展代理

目录

脚本代理配置文件

启用脚本代理

代理优先级

脚本代理配置文件

脚本代理配置文件包含您希望脚本代理运行的所有脚本。该配置文件中的脚本包含在 XML 标记中,这些标记定义脚本的开头和结尾,以及将数据传递给脚本所需的各个输入参数。脚本使用 Windows PowerShell 语法进行编写。该配置文件是使用下表中的元素或属性的 XML 文件。

元素 属性 描述

Configuration

不适用

此元素包含脚本代理 cmdlet 扩展代理可以运行的所有脚本。Feature 标记是此标记的子级。

配置文件中只有一个 Configuration 标记。

Feature

不适用

此元素包含与某个功能相关的一组脚本。每个脚本(在 ApiCall 子标记中定义)都扩展 cmdlet 执行管道的特定部分。此标记包含 NameCmdlets 属性。

Configuration 标记下可以有多个 Feature 标记。

 

Name

此属性包含功能的名称。使用此属性可帮助标识标记中包含的脚本所扩展的功能。

 

Cmdlets

此属性包含将使用此功能扩展中的脚本集的 Exchange cmdlet 列表。可以指定多个 cmdlet,使用逗号分隔每个 cmdlet。

ApiCall

不适用

此元素包含可以扩展 cmdlet 执行管道某部分的脚本。每个脚本在其扩展的 cmdlet 执行管道中,由 API 调用名称进行定义。下面是可以扩展的 API 名称:

  • ProvisionDefaultProperties

  • UpdateAffectedIConfigurable

  • Validate

  • OnComplete

 

Name

此属性包括扩展 cmdlet 执行管道的 API 调用的名称。

Common

不适用

此元素包含可以由配置文件中任何脚本使用的功能。

每个 Exchange 2010 服务器都在 <安装路径>\V14\Bin\CmdletExtensionAgents 文件夹中包含文件 ScriptingAgentConfig.xml.sample。如果启用脚本代理 cmdlet 扩展代理,则必须在每个 Exchange 2010 服务器上将此文件重命名为 ScriptingAgentConfig.xml。示例配置文件包含示例脚本,可以使用这些脚本帮助了解如何向配置文件添加脚本。

在向配置文件添加了脚本之后,或如果对配置文件进行了更改,必须在组织中的每个 Exchange 2010 服务器上都更新该文件。必须进行此操作,以确保每个服务器都包含脚本代理 cmdlet 扩展代理运行的脚本的最新版本。

脚本中常用的某些字符在 XML 中也具有特殊含义。若要在脚本中使用这些字符,请使用转义序列。例如,以下字符使用了转义序列:

  • 使用 &gt;,而不是大于号 ( > )

  • 使用 $lt;,而不是小于号 ( < )

  • 使用 &amp;,而不是与号 ( & )

返回顶部

启用脚本代理

脚本代理 cmdlet 扩展代理在默认情况下禁用。当启用脚本代理时,会为整个 Exchange 2010 组织都启用该代理。在启用脚本代理之前,验证脚本代理配置文件是否已在每个 Exchange 2010 服务器上都正确进行了重命名,并使用脚本进行了更新。如果未正确重命名配置文件,则每当 cmdlet 运行时,您都会收到错误消息。

若要启用脚本代理,必须执行以下操作:

  1. 在组织中的每个 Exchange 2010 服务器上,将 <安装路径>\V14\Bin\CmdletExtensionAgents 中的 ScriptingAgentConfig.xml.sample 文件重命名为 ScriptingAgentConfig.xml。

    备注

    可以将配置文件从一个 Exchange 2010 服务器复制到其他 Exchange 2010 服务器。请务必先更新要复制的配置文件,然后再进行复制。

  2. 在组织中每个 Exchange 2010 服务器上,将脚本添加到重命名后的配置文件。

  3. 启用脚本代理 cmdlet 扩展代理。有关启用 cmdlet 扩展代理的详细信息,请参阅启用 Cmdlet 扩展代理

返回顶部

代理优先级

默认情况下,脚本代理 cmdlet 扩展代理会在所有其他代理(除了管理员审核日志代理)之后运行。如果要用创建的脚本替换现有代理,则必须禁用其他代理,或更改任一代理的优先级,使脚本代理 cmdlet 扩展代理先运行。有关如何禁用或更改代理优先级的详细信息,请参阅下列主题:

返回顶部