コマンドレット拡張エージェント

製品: Exchange Server 2013

コマンドレット拡張エージェントは、 Exchange 2013 コマンドレットの実行時にコマンドレットによって呼び出される Microsoft Exchange Server 2013 のコンポーネントです。 コマンドレット拡張エージェントは、その名前が示すように、コマンドレットの要求に基づいてデータの処理または追加操作の実行を支援することで、それらを呼び出すコマンドレットの機能を拡張します。 コマンドレット拡張エージェントは、任意のサーバーの役割で使用可能です。

エージェントは、Exchange 管理シェル コマンドレットの機能を変更、置き換え、または拡張できます。 また、コマンド上で提供されない必須パラメーターの値の提供、ユーザーが入力した値の上書き、コマンドレットの実行中にコマンドレット ワークフロー外の他の操作の実行などを行うことができます。

たとえば、 New-Mailbox コマンドレットは、新しいメールボックスを作成するメールボックス データベースを指定する Database パラメーターを受け入れます。 Microsoft Exchange Server 2007 では、New-Mailbox コマンドレットの実行時に Database パラメーターを指定しないと、コマンドは失敗します。 ただし、Exchange 2013 では、コマンドレットの実行時に New-Mailbox コマンドレットによってエージェントが呼び出 Mailbox Resources Management されます。 Database パラメーターが指定されていない場合、Mailbox Resources Managementエージェントは、新しいメールボックスを作成する適切なメールボックス データベースを自動的に決定し、その値を Database パラメーターに挿入します。

コマンドレット拡張エージェントは、Exchange 2013 コマンドレットおよび Microsoft Exchange Server 2010 コマンドレットによってのみ起動できます。 Exchange 2007 コマンドレットおよび他の Microsoft/サード パーティ製品によって提供されるコマンドレットは、コマンドレット拡張エージェントを呼び出すことができません。 スクリプトもコマンドレット拡張エージェントを直接呼び出すことはできません。 ただし、スクリプトに Exchange 2013 コマンドレットが含まれている場合、これらのコマンドレットはコマンドレット拡張エージェントを呼び出し続けます。

コマンドレット拡張エージェントに関連する管理タスクをお探しですか? コマンドレット拡張エージェントの管理に関するページを参照してください。

エージェントの優先度

エージェントの優先度によって、コマンドレットの実行中にエージェントが呼び出される順序が決まります。 優先度が高い、つまり 0 に近いエージェントが最初に呼び出されます。 2 つ以上のエージェントが同じプロパティの値を設定しようとする場合に、エージェントの優先度が重要になります。 優先度が最も高いエージェントによるプロパティ値の設定試行は成功し、優先度の低いエージェントによる同じプロパティ設定に対する後続の試行は無視されます。 たとえば、オブジェクトの Name プロパティが優先度 3 のエージェントと優先度 6 の別のエージェントによって変更される場合、優先度 6 のエージェントによる変更は無視されます。

を使用 Scripting agent して、他の優先度の高いエージェントによって設定される可能性があるプロパティの値を設定する場合は、次のオプションがあります。

  • 現在プロパティを設定しているエージェントを無効にします。

  • Scripting agent 、置き換える既存のエージェントよりも高い優先順位に設定します。

  • エージェントの優先順位は同じに保ち、 の下で実行されるスクリプトが、他の Scripting agent エージェントによって提供される値に対応していることを確認します。

警告

優先度の変更またはビルトイン エージェントの機能の置き換えは、高度な操作です。 変更について完全に理解するようにしてください。

エージェントの優先度の変更の詳細については、「コマンドレット拡張エージェントの管理」を参照してください。

ビルトイン エージェント

Exchange 2013 には、コマンドレットの実行時に呼び出すことができるいくつかのエージェントが含まれています。 次の表に、エージェント、その順序、および既定でそのエージェントが有効になっているかどうかの一覧を示します。 Exchange 2013 を実行しているサーバーから、エージェントを追加または削除することはできません。 ただし、 を使用Scripting agentしてスクリプトWindows PowerShell実行して、それを使用するコマンドレットの機能を拡張できます。 の詳細 Scripting agentについては、このトピックの後半の「スクリプト エージェント」セクションを参照してください。

特定のエージェントの機能を、 を使用して Scripting agent呼び出すカスタム スクリプトで指定した機能に置き換える場合は、ほとんどのエージェントを有効または無効にしたり、エージェントの優先順位を変更したりできます。 ただし、一部のエージェントは無効にできません。 無効にできないエージェントは システム エージェント と呼ばれ、 IsSystem プロパティが に $True設定されています。 次の表に、Exchange 2013 コマンドレット拡張エージェント (システム エージェントを含む) の詳細を示します。

エージェントの構成は、組織レベルで格納されます。 エージェントを有効または無効にするか、その優先度を設定する場合、組織内のすべてのサーバーにわたってエージェントの構成を設定します。 例外は、 にスクリプトを追加することです Scripting agent。 各サーバー上のスクリプトは個別に更新する必要があります。 で Scripting agent使用するスクリプトの構成の詳細については、このトピックの後半の「スクリプト エージェント」セクションを参照してください。

警告

各エージェントの機能およびエージェントと Exchange コマンドレットのやり取りを十分に理解していない場合、エージェントの優先度を変更したり、エージェントを有効または無効にすると、予期しない結果が発生する可能性があります。 エージェントの構成を変更する前に、目的の変更内容と結果を十分に理解した上で、カスタム スクリプトが意図したとおりに動作することを確認してください。

Exchange 2013 コマンドレット拡張子エージェント

エージェント名 優先度 既定で有効 システム エージェント
Admin Audit Log agent 255 True
Scripting agent 6 False X
Mailbox Resources Management agent 5 True X
OAB Resources Management agent 4 True X
Query Base DN agent 3 True X
Provisioning Policy agent 2 True X
Rus agent 1 True X
Mailbox Creation Time agent 0 True いいえ

Scripting agent

Exchange 2013 のコマンドレット拡張エージェントを使用 Scripting agent して、独自のスクリプト ロジックを Exchange コマンドレットの実行に挿入できます。 を使用すると、条件の Scripting agent追加、値のオーバーライド、レポートの設定を行うことができます。

警告

コマンドレット拡張エージェントを Scripting agent 有効にすると、Exchange 2013 を実行しているサーバーでコマンドレットが実行されるたびにエージェントが呼び出されます。 これには、Exchange 管理シェルで直接実行されるコマンドレットだけでなく、Exchange サービスと Exchange 管理センター (EAC) によって実行されるコマンドレットも含まれます。 更新した構成ファイルを Exchange 2013 サーバーにコピーし、コマンドレット拡張エージェントを有効にする Scripting agent 前に、スクリプトと構成ファイルに加えた変更をテストすることを強くお勧めします。

Exchange コマンドレットが実行されるたびに、コマンドレットはコマンドレット拡張エージェントを Scripting agent 呼び出します。 このエージェントが呼び出されると、コマンドレットは、スクリプトがコマンドレットによって呼び出されるように構成されているかどうかを確認します。 コマンドレットに対してスクリプトを実行する必要がある場合、コマンドレットはスクリプトで定義されているすべての API の呼び出しを試みます。 次の API を使用でき、次の順序で呼び出されます。

  1. ProvisionDefaultProperties: この API を使用して、オブジェクトの作成時にプロパティの値を設定できます。 値を設定すると、その値がコマンドレットに返され、コマンドレットによって プロパティの値が設定されます。 ユーザーが値を指定しなかった場合は、プロパティに値を入力するか、ユーザーによって指定された値をオーバーライドできます。 この API は、より優先度の高いエージェントによって設定された値を使用します。 コマンドレット拡張エージェントは Scripting agent 、優先度の高いエージェントによって設定された値を上書きしません。

  2. UpdateAffectedIConfigurable: この API を使用すると、他のすべての処理が完了した後でも Validate 、API がまだ呼び出されていないオブジェクトのプロパティの値を設定できます。 この API は、より優先度の高いエージェントによって設定された値を使用します。 コマンドレット拡張エージェントは Scripting agent 、優先度の高いエージェントによって設定された値を上書きしません。

  3. 検証: この API を使用して、コマンドレットによって設定されるオブジェクトのプロパティの値を検証できます。 この API は、コマンドレットがデータを書き込む直前に呼び出されます。 コマンドレットが成功、または失敗する検証チェックを構成できます。 コマンドレットがこの API 内の検証チェックをパスすると、コマンドレットはデータの書き込みを許可されます。 コマンドレットが検証チェックに失敗すると、この API で定義されているエラーが返されます。

  4. OnComplete: この API は、すべてのコマンドレット処理が完了した後に使用されます。 この API は、外部データベースへのデータの書き込みなどの処理後のタスクを実行するために使用します。

注:

動詞を Scripting agent 含む Get コマンドレットを実行すると、コマンドレット拡張エージェントは呼び出されません。

Scripting agent 構成ファイル

Scripting agent構成ファイルには、 を実行するすべてのスクリプトがScripting agent含まれています。 構成ファイル内のスクリプトは、スクリプトの開始と終了、およびスクリプトにデータを渡すのに必要な各種入力パラメーターを定義する XML タグ内に格納されています。 スクリプトは、Windows PowerShell 構文に従って記述されます。 構成ファイルは、次の表の要素または属性を使用する 1 つの XML ファイルです。

Scripting agent 構成ファイルの属性

要素 属性 説明
Configuration 該当なし この要素には、コマンドレット拡張エージェントが実行できるすべてのスクリプトが Scripting agent 含まれています。 タグは Feature 、このタグの子です。

構成ファイルには 1 つの Configuration タグしかありません。
Feature 該当なし この要素には、機能に関連するすスクリプト セットが含まれます。 子タグで定義されている ApiCall 各スクリプトは、コマンドレット実行パイプラインの特定の部分を拡張します。 このタグには、 属性と Cmdlets 属性がName含まれています。

タグの下に複数 Feature のタグを指定 Configuration できます。
Name この属性には、機能の名前が含まれます。 この属性を使用すると、タグ内に格納されているスクリプトによって拡張される機能を特定しやすくなります。
Cmdlets この属性には、この機能拡張内のスクリプト セットによって使用される Exchange コマンドレットの一覧が含まれます。 複数のコマンドレットを指定する場合は、各コマンドレットをコンマで区切ります。
ApiCall 該当なし この要素には、コマンドレット実行パイプラインの一部を拡張できるスクリプトが含まれます。 各スクリプトは、拡張するコマンドレット実行パイプライン内で API 呼び出し名で定義されます。 拡張できる API 名は以下のとおりです。
  • ProvisionDefaultProperties
  • UpdateAffectedIConfigurable
  • Validate
  • OnComplete
Name この属性には、コマンドレット実行パイプラインを拡張している API 呼び出しの名前が含まれます。
Common 該当なし この要素には、構成ファイル内のすべてのスクリプトから使用できる機能が含まれます。

すべての Exchange 2013 サーバーには、フォルダー内の ScriptingAgentConfig.xml.sample ファイルが %ExchangeInstallPath%CmdletExtensionAgents 含まれています。 Scripting Agent コマンドレット拡張エージェントを有効にする場合は、すべての Exchange 2013 サーバーで、このファイルの名前を ScriptingAgentConfig.xml に変更する必要があります。 サンプル構成ファイルには、構成ファイルにスクリプトを追加する方法を理解するのに役立つサンプル スクリプトが含まれています。

構成ファイルにスクリプトを追加した後、または構成ファイルを変更した場合は、組織内のすべての Exchange 2013 サーバーの構成ファイルを更新する必要があります。 これは、各サーバーに、コマンドレット拡張エージェントが実行するスクリプトの最新バージョンが含まれていることを Scripting Agent 確認するために行う必要があります。

スクリプト内で通常使用される文字の中には、XML 内で特殊な意味を持つものがあります。 スクリプトでこれらの文字を使用する場合は、エスケープ シーケンスを使用します。 たとえば、エスケープ シーケンスを使用する文字には以下があります。

  • より大きい記号 ( > ) の代わりに、 を使用します。 >
  • より小さい記号 ( < ) ではなく、 を使用します。 $lt;
  • アンパサンド ( & ) の代わりに、 を使用します。 &amp;

Scripting agent を有効にする

Scripting agentコマンドレット拡張エージェントは既定で無効になっています。 を Scripting agent有効にすると、エージェントは Exchange 2013 組織全体で有効になります。 を有効にする前に Scripting agent、すべての Exchange 2013 サーバーで構成ファイルの名前が正しく変更され、スクリプトで更新されていることを Scripting agent 確認します。 構成ファイルの名前を正しく変更していない場合、または構成ファイルを別の Exchange 2013 サーバーからこのコンピューターにコピーしていない場合は、コマンドレットが実行されるごとにエラー メッセージが受信されます。

を有効にするには、 Scripting agent次の操作を行う必要があります。

  1. ScriptingAgentConfig.xml.sample ファイルの %ExchangeInstallPath%Bin\CmdletExtensionAgents 名前を、組織内のすべての Exchange 2013 サーバーのScriptingAgentConfig.xmlに変更します。

    注:

    構成ファイルは Exchange 2013 サーバーから別の Exchange 2013 サーバーにコピーできます。 構成ファイルをコピーする際には、事前にコピーする構成ファイルを必ず更新してください。

  2. 組織内のすべての Exchange 2013 サーバーで名前変更した構成ファイルに独自のスクリプトを追加します。

  3. コマンドレット拡張エージェントを Scripting agent 有効にします。 コマンドレット拡張エージェントの有効化の詳細については、「 コマンドレット拡張エージェントの管理」を参照してください。

Scripting agent の優先度

既定では、コマンドレット拡張エージェントは Scripting agent 、エージェントを除き、他のすべてのエージェントの Scripting agent 後で実行されます。 作成したスクリプトで既存のエージェントを置き換える場合は、他のエージェントを無効にするか、コマンドレット拡張エージェントが最初に実行されるようにいずれかのエージェントの優先順位を変更する Scripting agent 必要があります。 無効にする方法またはエージェントの優先度を変更する方法の詳細については、「 コマンドレット拡張エージェントの管理」を参照してください。