Exchange 管理シェル コマンドレットの応答を使用する

Exchange の管理アプリケーションで、Exchange 管理シェル コマンドレットからの応答を使用する方法について説明します。

適用対象: Exchange Online、Exchange Server 2013、Office 365

各 Exchange Management Shell コマンドレットは、Exchange 管理シェル環境内の任意のオブジェクトの一貫性のあるビューを提供する 1 つ以上の PSObject インスタンスを返します。 この記事では、PSObject インスタンスのプロパティを使用して、基になる Exchange Server 2013 API オブジェクトのプロパティ値を返す方法について説明します。

コマンドレットの応答を使用するための前提条件

コマンドレットの応答を使用するには、System.Automation.Management 名前空間の参照が必要です。

注:

Visual Studio を使用してアプリケーションを作成するときには、System.Mangagement.Automation.dll アセンブリの参照をプロジェクトに追加する必要があります。 アセンブリは次の場所のいずれかにあります。

  • オペレーティング システムが Windows XP および Windows Vista の場合、Windows PowerShell のインストール ディレクトリ ($PSHOME)。
  • オペレーティング システムが Windows 7 および Windows 8 の場合は次のフォルダー:Windows\assembly\GAC_MSIL\System.Management.Automation。

Windows PowerShell のリモート実行空間

Exchange 管理シェルでは、ローカル サーバー上で実行されるコマンドであっても、すべてのコマンドにリモート Windows PowerShell機能が使用されます。 その結果、Exchange Management Shell コマンドレットからのすべての応答がシリアル化された XML になります。 つまり、応答オブジェクトは、応答の生成に使用された Exchange オブジェクトの種類を示しますが、応答オブジェクトを Exchange オブジェクト型にキャストすることはできません。代わりに、応答オブジェクトによって公開されるプロパティ バッグを使用して、Exchange オブジェクトの種類から値を取得する必要があります。

応答オブジェクトのプロパティ バッグには、Exchange オブジェクト型の各パブリック プロパティまたはメソッドのキーと値のペアが含まれています。 応答オブジェクトには、基になる Exchange オブジェクト型の名前が含まれています。この名前を使用すると、適切なプロパティを抽出できるように、応答オブジェクトによって表される Exchange オブジェクトの種類を決定できます。 プロパティ バッグの各値には型情報も含まれているため、プロパティ値を適切なマネージド型にキャストできます。

コマンドレット応答を使用する

PSObject クラスは、基になる Exchange 2013 API オブジェクトの値を含む次の 3 つのパブリック プロパティを公開します:PropertiesMethodsMembers。 Exchange 2013 API オブジェクトによって公開される各プロパティには、[ プロパティ ] プロパティと [メンバー] プロパティに対応するキーと値のペアがあります。 アプリケーションでは、プロパティの名前で Properties コレクションのインデックスを作成して、 プロパティの値を取得できます。

PSObject インスタンスの TypeNames プロパティを使用して、PSObject インスタンスがカプセル化する、基になる Exchange オブジェクトの種類を決定できます。 TypeNames プロパティは文字列のコレクションであり、表される型のオブジェクト階層が含まれています。 これらの名前を使用して PSObject インスタンスが表すオブジェクトを決定し、適切にプロパティを抽出できるようにします。

次のコード例では、コマンドレットの応答を使用して、コンソール上の PSObject インスタンスの Properties コレクションの内容を印刷します。 コード例には System.Automation.Management 名前空間の参照が必要です。

foreach (PSPropertyInfo propertyInfo in psObject.Properties)
{
    Console.WriteLine(string.Format("{0}: {1}",
        propertyInfo.Name, propertyInfo.Value);
}

For Each PropertyInfo As PSProperty In ObjectInfo.Properties
    Console.WriteLine(String.Format("{0}: {1}", PropertyInfo.Name, PropertyInfo.Value))
Next

関連項目