修改多值属性

**适用于:**Exchange Server 2010

**上一次修改主题:**2009-10-14

本主题说明如何使用 Exchange 命令行管理程序在对象上的多值属性中添加和删除值。

多值属性概述

多值属性是可以包含多个值的属性。例如,RecipientFilterConfig 对象上的 BlockedRecipients 属性可以接受如下示例中所示的多个收件人地址:

  • john@contoso.com
  • kim@northwindtraders.com
  • david@adatum.com

由于 BlockedRecipients 属性可以接受多个值,因此被称为多值属性。

有关对象的详细信息,请参阅结构化数据

修改多值属性与修改仅接受一个值的属性

修改多值属性的方式与修改仅可以接受一个值的属性的方式稍有不同。当修改仅接受一个值的属性时,可以为其直接分配一个值,如以下命令所示。

Set-TransportConfig -MaxSendSize 12MB

当使用该命令向 MaxSendSize 属性提供一个新值时,会覆盖存储的值。对于仅接受一个值的属性,则没有这个问题。但是,多值属性存在这个问题。例如,假定 RecipientFilterConfig 属性上的 BlockedRecipients 属性配置为具有在上一部分中列出的三个值。当运行命令 Get-RecipientFilterConfig | Format-List BlockedRecipients 时,将显示以下内容。

BlockedRecipients : {david@adatum.com, kim@northwindtraders.com, john@contoso.com}

现在,假定您已经接收到一个向阻止的收件人列表中添加新的 SMTP 地址的请求。运行以下命令即可添加新的 SMTP 地址。

Set-RecipientFilterConfig -BlockedRecipients chris@contoso.com

再次运行 Get-RecipientFilterConfig | Format-List BlockedRecipients 命令时,将看到以下内容。

BlockedRecipients : {chris@contoso.com}

这并不是您所期望的。您希望向现有的阻止的收件人列表中添加新的 SMTP 地址,但新的 SMTP 地址覆盖了现有的阻止的收件人列表。这就是修改多值属性与修改仅接受一个值的属性不同的地方。当修改多值属性时,必须确保附加或删除值,而不会覆盖整个值的列表。以下部分介绍如何正确执行该操作。

备注

某些 cmdlet(如 Set-TransportRule)不支持采用该主题中描述的方式修改对象的属性。有关如何向这些 cmdlet 的多值属性中添加值以及从中删除值的详细信息,请参阅这些 cmdlet 的主题,如Set-TransportRule

若要修改多值属性,必须理解以下概念:

向多值属性中附加值

向多值属性中附加值非常简单。只需几个额外的步骤。接下来,假定 BlockedRecipients 属性包含本主题第一部分中列出的值。

首先,您必须检索要修改的对象并将其分配给一个变量。例如,使用以下命令将 RecipientFilterConfig 对象分配给 $Example 变量。

$Example = Get-RecipientFilterConfig

如果运行命令 $Example | Format-List BlockedRecipients,则返回以下内容。

BlockedRecipients : {david@adatum.com, kim@northwindtraders.com, john@contoso.com}

接下来,您必须添加要附加到 BlockedRecipients 属性的值,该属性位于存储在 $Example 变量中的对象上。注意,此步骤仅向存储在该变量中的对象添加该值。若要将 chris@contoso.com 添加到存储在 $Example 变量中的对象的 BlockedRecipients 属性中,请运行以下命令。

$Example.BlockedRecipients += "chris@contoso.com"

如果再次运行命令 $Example | Format-List BlockedRecipients,则返回以下内容。

BlockedRecipients : {david@adatum.com, kim@northwindtraders.com, john@contoso.com, chris@contoso.com}

正如您所看到的一样,SMTP 地址 chris@contoso.com 已经被添加到存储在 BlockedRecipients 属性中的值的列表中。

最后,您必须使用以下命令保存存储在 $Example 中的对象。

Set-RecipientFilterConfig -BlockedRecipients $Example.BlockedRecipients

现在,当您运行 Get-RecipientFilterConfig | Format-List BlockedRecipients 命令时,您将看到 SMTP 地址 chris@contoso.com 已经被添加到服务器中。

将多个值附加到多值属性

如果您想同时将多个值附加到多值属性,请执行与前面所述的步骤相同的步骤。当指定要附加的值时,使用逗号分隔值,如以下示例所示。

$Example.BlockedRecipients += "user1@contoso.com", "user2@contoso.com", "user3@contoso.com"

已经指定要添加的值之后,请使用 Set-RecipientFilterConfig cmdlet 保存对象。

备注

某些 cmdlet 不允许同时附加多个值。

从多值属性中删除值

您可能只想从多值属性中删除一个值,而不是同时删除所有值。从多值属性中删除值与附加值类似。但是,与附加值不同的是,您必须一次删除一个值。接下来,假定 BlockedRecipients 属性包含本主题第一部分中列出的值。

首先,您必须将要修改的对象分配给某个变量,如以下示例所示。

$Example = Get-RecipientFilterConfig

然后,运行以下命令,该命令指定要删除的确切值。

$Example.BlockedRecipients -= "david@contoso.com"

最后,按照如下方式保存存储在变量中的对象。

Set-RecipientFilterConfig -BlockedRecipients $Example.BlockedRecipients

向多值属性附加值的示例

下列命令行管理程序步骤示例说明如何将值附加到 Microsoft Exchange Server 2010 中各种对象上可用的某些多值属性,然后显示更新结果。

此示例将 SMTP 地址附加到邮箱 Kim Akers。

$Mailbox = Get-Mailbox "Kim Akers"
$Mailbox.EmailAddresses += "kim@contoso.com"
Set-Mailbox "Kim Akers" -EmailAddresses $Mailbox.EmailAddresses

此示例检索已更新邮箱 Kim Akers 的名称和电子邮件地址。

Get-Mailbox "Kim Akers" | Format-List Name, EmailAddresses

本示例附加 GenerateCopyOfDSNFor 属性上的其他传递状态通知 (DSN) 代码

$DsnList = Get-TransportConfig
$DsnList.GenerateCopyOfDSNFor += "5.4.7", "5.7.1", "5.7.2"
Set-TransportConfig -GenerateCopyOfDSNFor $DsnList.GenerateCopyOfDSNFor

此示例检索 DSN 代码,包括已添加的代码。

Get-TransportConfig | Format-List GenerateCopyOfDSNFor

从多值属性中删除值的示例

下列步骤示例说明如何从 Exchange 2010 中各种对象上可用的某些多值属性中删除值,然后显示更新结果。

此示例从客户端访问服务器邮箱中删除已启用的 Microsoft Exchange ActiveSync 设备的设备 ID。

$CasDevice = Get-CasMailbox "David Simpson"
$CasDevice.ActiveSyncAllowedDeviceIDs -= "4B9207650054767AD0AEE83A414BCD7F"
Set-CasMailbox "David Simpson" -ActiveSyncAllowedDeviceIDs $CasDevice.ActiveSyncAllowedDeviceIDs

此示例检索更新的设备 ID 列表。

Get-CasMailbox "David Simpson" | Format-List Name, ActiveSyncAllowedDeviceIDs

此示例从通讯组 Sales Group 上授予“代表发送”权限的邮箱列表中删除邮箱。

$DistributionGroup = Get-DistributionGroup "Sales Group"
$DistributionGroup.GrantSendOnBehalfTo -= (Get-Mailbox "Christine Koch").Identity
Set-DistributionGroup "Sales Group" -GrantSendOnBehalfTo $DistributionGroup.GrantSendOnBehalfTo

此示例检索通讯组 Sales Group 上授予“代表发送”权限的已更新邮箱列表。

Get-DistributionGroup "Sales Group" | Format-List Name, GrantSendOnBehalfTo