使用 Exchange 命令行管理程序 cmdlet 响应

了解如何在 Exchange 托管应用程序中使用来自 Exchange Shell cmdlet 的响应。

适用于: Exchange Online |Exchange Server 2013 |Office 365

每个 Exchange 命令行管理程序 cmdlet 返回一个或多个 PSObject 实例,这些实例提供 Exchange 命令行管理程序环境中任何对象的一致视图。 本文介绍如何使用 PSObject 实例的属性返回基础Exchange Server 2013 API 对象的属性值。

使用 cmdlet 响应的先决条件

若要使用 cmdlet 响应,需要对 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 命令行管理程序 cmdlet 的所有响应都是序列化的 XML。 这意味着,尽管响应对象指示用于生成响应的 Exchange 对象类型,但无法将响应对象强制转换为 Exchange 对象类型;相反,必须使用响应对象公开的属性包才能从 Exchange 对象类型获取值。

响应对象中的属性包包含 Exchange 对象类型中每个公共属性或方法的键/值对。 响应对象包含基础 Exchange 对象类型的名称;可以使用此名称来确定响应对象表示的 Exchange 对象类型,以便提取相应的属性。 属性包中的每个值还包括类型信息,以便你可以将属性值强制转换为相应的托管类型。

使用 cmdlet 响应

PSObject 类公开以下三个公共属性,这些属性包含基础 Exchange 2013 API 对象的值:PropertiesMethodsMembers。 Exchange 2013 API 对象公开的每个属性在“属性”和“成员”属性中都有相应的键/值对。 应用程序可以按属性的名称为 Properties 集合编制索引,以检索属性的值。

可以使用 PSObject 实例的 TypeNames 属性来确定 PSObject 实例封装的基础 Exchange 对象的类型。 TypeNames 属性是包含所表示类型的对象层次结构的字符串的集合。 可以使用这些名称来确定 PSObject 实例表示的对象,以便可以提取相应的属性。

下面的代码示例使用 cmdlet 响应在主机上打印 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

另请参阅