修改多值属性

 

适用于: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

上一次修改主题: 2007-08-13

本主题说明如何使用 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 地址覆盖了现有的阻止的收件人列表。这就是修改多值属性与修改仅接受一个值的属性不同的地方。当修改多值属性时,必须确保附加或删除值,而不会覆盖整个值的列表。以下部分介绍如何正确执行该操作。

note注意:
某些 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 保存对象。

note注意:
某些 cmdlet 不允许同时附加多个值。

如何从多值属性中删除值

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

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

$Example = Get-RecipientFilterConfig

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

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

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

Set-RecipientFilterConfig -BlockedRecipients $Example.BlockedRecipients

向多值属性附加值的示例

下列 Exchange 命令行管理程序步骤是如何将值附加到 Microsoft Exchange Server 2007 中各种对象上可用的某些多值属性的示例。

将 SMTP 地址附加到邮箱的步骤

  1. 运行以下命令:

    $Mailbox = Get-Mailbox "Kim Akers"
    $Mailbox.EmailAddresses += "kim@contoso.com"
    Set-Mailbox "Kim Akers" -EmailAddresses $Mailbox.EmailAddresses
    
  2. 运行以下命令以查看更新的邮箱:

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

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

  1. 运行以下命令:

    $DsnList = Get-TransportConfig
    $DsnList.GenerateCopyOfDSNFor += "5.4.7", "5.7.1", "5.7.2"
    Set-TransportConfig -GenerateCopyOfDSNFor $DsnList.GenerateCopyOfDSNFor
    
  2. 运行以下命令以查看更新的 DSN 代码:

    Get-TransportConfig | Format-List GenerateCopyOfDSNFor
    

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

以下步骤是如何从 Exchange 2007 中各种对象上可用的某些多值属性中删除值的示例。

从客户端访问服务器 (CAS) 邮箱中删除启用的 Exchange ActiveSync 设备的设备 ID

  1. 运行以下命令

    $CasDevice = Get-CasMailbox "David Simpson"
    $CasDevice.ActiveSyncAllowedDeviceIDs -= "4B9207650054767AD0AEE83A414BCD7F"
    Set-CasMailbox "David Simpson" -ActiveSyncAllowedDeviceIDs $CasDevice.ActiveSyncAllowedDeviceIDs
    
  2. 运行以下命令以查看更新的 CAS 邮箱:

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

从通讯组上授予“代表发送”权限的邮箱列表中删除邮箱

  1. 运行以下命令:

    $DistributionGroup = Get-DistributionGroup "Sales Group"
    $DistributionGroup.GrantSendOnBehalfTo -= (Get-Maibox "Christine Hughes").Identity
    Set-DistributionGroup "Sales Group" -GrantSendOnBehalfTo $DistributionGroup.GrantSendOnBehalfTo
    
  2. 运行以下命令以查看更新的通讯组

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

详细信息

有关本主题中讨论的功能的详细信息,请参阅下列主题: