瞭解 Scripting Agent

 

適用版本: Exchange Server 2010 SP2, Exchange Server 2010 SP3

上次修改主題的時間: 2015-03-09

您可以使用 Microsoft Exchange Server 2010 中的 Scripting Agent Cmdlet 延伸代理程式將您自己的指令碼處理邏輯插入 Exchange Cmdlet 的執行中。使用 Scripting Agent,您可以新增條件、覆寫值,以及設定報告。

注意

當您啟用 Scripting Agent Cmdlet 延伸代理程式時,每當執行 Exchange 2010 之伺服器上執行 Cmdlet 時,就會呼叫該代理程式。這不只包含您在 Exchange 管理命令介面中直接執行的 Cmdlet,也包含由 Exchange 服務、Exchange 管理主控台 (EMC),以及 Exchange 控制台 (ECP) 執行的 Cmdlet。我們強烈建議您在將更新的組態檔複製到 Exchange 2010 Server 並啟用 Scripting Agent Cmdlet 延伸代理程式之前,先測試您的指令碼及您對組態檔所做的任何變更,

每次當 Exchange Cmdlet 執行時,該 Cmdlet 會呼叫 Scripting Agent Cmdlet 延伸代理程式。當呼叫此代理程式時,該 Cmdlet 會檢查 Cmdlet 是否設定呼叫任何指令碼。如果應該針對 Cmdlet 執行指令碼,該 Cmdlet 會嘗試呼叫指令碼中定義的任何 API。下列 API 可以使用,而且是以下列順序呼叫:

  1. ProvisionDefaultProperties   此 API 可用來在物件建立時,設定物件上的內容值。當您設定值時,該值會傳回給 Cmdlet,而且該 Cmdlet 會在內容上設定該值。如果使用者未指定值,您可以在內容上填入值,或者也可以覆寫由使用者指定的值。此 API 會採用較高優先順序代理程式所設定的值。Scripting Agent Cmdlet 延伸代理程式不會覆寫由較高優先順序代理程式設定的值。

  2. UpdateAffectedIConfigurable   當所有其他處理皆已完成,但尚未呼叫 Validate API 時,此 API 可用來傳送物件上的內容值。此 API 會採用較高優先順序代理程式所設定的值。Scripting Agent Cmdlet 延伸代理程式不會覆寫由較高優先順序代理程式設定的值。

  3. Validate   此 API 可用來驗證物件內容上要由 Cmdlet 設定的值。在 Cmdlet 寫入任何資料之前,即呼叫此 API。您可以設定允許 Cmdlet 成功或失敗的驗證檢查。如果 Cmdlet 通過此 API 中的驗證檢查,該 Cmdlet 即可寫入資料。如果 Cmdlet 的驗證檢查失敗,它會傳回此 API 中定義的任何錯誤。

  4. OnComplete   當所有 Cmdlet 處理皆完成時,會使用此 API。它可以用來執行處理後的工作,例如將資料寫入外部資料庫。

注意

當具有 Get 動詞的 Cmdlet 執行時,則不會呼叫 Scripting Agent Cmdlet 延伸代理程式。次外,在執行 Edge Transport server role 的 Exchange Server 上也不會執行該代理程式,因為該伺服器角色不支援 Cmdlet 延伸代理程式。

Scripting Agent 是眾多 Cmdlet 延伸代理程式中的一個。如需 Cmdlet 延伸代理程式的詳細資訊,請參閱了解 Cmdlet 延伸代理程式

目錄

Scripting Agent 組態檔

啟用 Scripting Agent

代理程式優先順序

Scripting Agent 組態檔

Scripting Agent 組態檔包含您要 Scripting Agent 執行的所有指令碼。組態檔中的指令碼是包含在 XML 標記內;XML 標記用來定義指令碼的開始與結束,以及傳遞資料至指令碼所需的各種輸入參數。指令碼是以 Windows PowerShell 語法撰寫。組態檔是一個 XML 檔,使用下表中的元素或屬性。

元素 屬性 描述

Configuration

不適用

此元素包含 Scripting Agent Cmdlet 延伸代理程式可以執行的所有指令碼。Feature 標記是此標記的子系。

組態檔中只有一個 Configuration 標記。

Feature

不適用

此元素包含與功能相關的一組指令碼。每個指令碼 (於 ApiCall 子系標記中定義) 都延伸 Cmdlet 執行管線的一個特定部分。此標記包含 NameCmdlets 屬性。

Configuration 標記之下可以有多個 Feature 標記。

 

Name

此屬性包含功能的名稱。使用此屬性可協助識別哪一個功能是由標記中所含之指令碼所延伸的。

 

Cmdlets

此屬性包含 Exchange Cmdlet 的清單 (這些 Cmdlet 會使用此功能延伸中的指令碼組)。您可以使用分號分隔每個 Cmdlet 來指定多個 Cmdlet。

ApiCall

不適用

此元素包含可延伸 Cmdlet 一部分執行管線的指令碼。每個指令碼是由其所延伸之 Cmdlet 執行管線中的 API 呼叫名稱所定義。下列為可延伸的 API 名稱:

  • ProvisionDefaultProperties

  • UpdateAffectedIConfigurable

  • Validate

  • OnComplete

 

Name

此屬性包含延伸 Cmdlet 執行管線之 API 呼叫的名稱。

Common

不適用

此元素包含組態檔中之任何指令碼可使用的功能。

每個 Exchange 2010 Server 都在<安裝路徑>\V14\Bin\CmdletExtensionAgents 資料夾中包含 ScriptingAgentConfig.xml 檔案。入果您啟用 Scripting Agent Cmdlet 延伸代理程式,則每個 Exchange 2010 Server 上的這個檔案都必須重新命名為 ScriptingAgentConfig.xml。範例組態檔包含可用來協助了解如何新增指令碼至組態檔的範例指令碼。

當您新增指令碼至組態檔後,或者對組態檔做了變更,必須更新組織中每個 Exchange 2010 Server 上的的檔案。此工作必須執行,已確保每個伺服器皆包含 Scripting Agent Cmdlet 延伸代理程式執行的最新版本指令碼。

通常在指令碼中使用的某些字元,在 XML 中也具有特殊意義。若要在指令碼中使用那些字元,請使用逸出序列。例如,下列字元使用逸出序列:

  • 請使用 &gt; 來代替大於符號 ( > )。

  • 請使用 $lt; 來代替小於符號 ( < )。

  • 請使用 &amp; 來代替 & 符號 ( & )。

回到頁首

啟用 Scripting Agent

Scripting Agent Cmdlet 延伸代理程式預設是停用的。當您啟用 Scripting Agent 時,也會啟用整個 Exchange 2010 組織的代理程式。在啟用 Scripting Agent 之前,請確認 Scripting Agent 組態檔已正確重新命名並與您在 Exchange 2010 Server 上的指令碼一起更新。如果沒有正確重新命名組態檔,每次 Cmdlet 執行時,您就會收到錯誤訊息。

若要啟用 Scripting Agent,您必須執行下列動作:

  1. 在組織中的每個 Exchange 2010 伺服器上,將**<安裝路徑>\V14\Bin\CmdletExtensionAgents** 中的 ScriptingAgentConfig.xml.sample 檔案重新命名為 ScriptingAgentConfig.xml。

    注意

    您可以將組態檔從一個 Exchange 2010 Server 複製到其他 Exchange 2010 Server。複製之前,請確定更新要複製的組態檔。

  2. 將您的指令碼新增至組織中每個 Exchange 2010 Server 上已重新命名的組態檔。

  3. 啟用 Scripting Agent Cmdlet 延伸代理程式。如需啟用 Cmdlet 延伸代理程式的詳細資訊,請參閱啟用 Cmdlet 延伸代理程式

回到頁首

代理程式優先順序

根據預設,Scripting Agent Cmdlet 延伸代理程式會在其他每個代理程式之後執行,但系統管理稽核記錄代理程式除外。如果要以您建立的指令碼取代現有代理程式,必須停用其他代理程式或變更每個代理程式的優先順序,以便讓 Scripting Agent Cmdlet 延伸代理程式先執行。如需如何停用或變更代理程式優先順序的詳細資訊,請參閱下列主題:

回到頁首