如何在 Exchange 命令行管理程序中修改传输规则操作

 

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

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

本主题说明如何使用 Exchange 命令行管理程序来修改安装了 Microsoft Exchange Server 2007 集线器传输服务器角色或边缘传输服务器角色的计算机上配置的现有传输规则的操作。

有关传输规则代理的详细信息,请参阅传输规则概述

开始之前

执行以下步骤之前,请参阅如何修改传输规则,该主题提供了修改传输规则操作所需的重要信息。

若要执行这些步骤,必须为您使用的帐户委派以下角色:

  • Exchange 组织管理员角色

若要在安装了边缘传输服务器角色的计算机上执行以下步骤,必须使用作为该计算机上的本地 Administrators 组成员的帐户进行登录。

有关管理 Exchange 2007 所需的权限、角色委派以及权利的详细信息,请参阅权限注意事项

若要执行这些步骤,必须了解以下概念:

有关 Exchange 命令行管理程序的详细信息,请参阅使用 Exchange 管理外壳

修改传输规则的操作

向传输规则添加操作

首先,必须保留现有操作。将操作数组中的每个现有操作都分配给一个独立的变量。使用以下命令语法将操作数组分配给变量:

$ActionArray = (Get-TransportRule "<rule name>").Actions

将传输规则的操作分配给变量并查看数组中有多少操作

  1. 运行以下命令将操作数组分配给变量:

    $ActionArray = (Get-TransportRule "Test Rule").Actions
    
  2. 运行以下命令查看数组中的操作数:

    $ActionArray.Length
    

随后将数组中的每个操作都分配给一个独立的变量。操作位于数组元素中,以 0$ActionArray.Length - 1 之间的数字进行编号。使用以下语法将每个操作数组元素都分配给一个独立的变量:

$ExistingAction<Array Element Number> = $ActionArray[<Array Element Number>]

将每个操作数组元素都分配给一个独立的变量

  • 运行以下命令:

    $ExistingAction0 = $ActionArray[0]
    $ExistingAction1 = $ActionArray[1]
    

随后新建一个或多个操作。不能使用已应用于现有传输规则的操作。使用以下语法将新操作分配给一个变量:

$NewAction = Get-TransportRuleAction <Action Name>

若要查看传输规则操作的列表,请参阅传输规则操作

将新操作分配给一个新变量

  • 运行以下命令:

    $NewAction = Get-TransportRuleAction LogEvent
    

将新操作分配给新变量之后,再为操作分配值。使用以下命令将值分配给新操作:

$NewAction.<ActionProperty> = <Single Value or Array of Values>

若要查看传输规则操作属性列表以及其值的预期格式,请参阅传输规则操作

将值分配给新操作

  • 运行以下命令:

    $NewAction.LogMessage = "Transport Rule triggered"
    

创建所有新操作之后,应将操作应用于现有传输规则。使用以下命令语法修改传输规则:

Set-TransportRule <Transport Rule Name> -Action @(<Actions>)
note注意:
使用 Set-TransportRule 命令指定操作时,必须按照其 Rank 对现有操作和新操作进行排序。使用 Get-TransportRuleAction 命令查看每个操作的分级。

修改现有传输规则

  • 运行以下命令:

    Set-TransportRule "Test Rule" -Action @($ExistingAction0, $ExistingAction1, $NewAction)
    

从传输规则中删除操作

若要从传输规则中删除操作,请执行本主题前面几节中的这些步骤:

  1. 将传输规则的操作分配给变量,并查看数组中有多少操作。

  2. 将每个操作数组元素分配给一个独立的变量,但要删除的操作除外。

  3. 修改现有传输规则。

从传输规则中删除操作

  1. 运行以下命令将操作数组分配给变量:

    $ActionArray = (Get-TransportRule "Test Rule").Actions
    
  2. 运行以下命令查看数组中的操作数:

    $ActionArray.Length
    
  3. 运行以下命令查看 $ActionArray 变量中的操作,并记录下要删除的操作的数组元素号:

    $ActionArray
    
  4. 运行以下命令将要保留的操作分配给变量,从而忽略不想保留的操作的数组元素:

    $ExistingAction1 = $Action[1]
    ...
    
  5. 运行以下命令修改传输规则,从而只分配与要保留的操作关联的变量:

    Set-TransportRule "Test Rule" -Action @($ExistingAction1)
    

修改传输规则中的现有操作的值

修改操作的步骤取决于操作接受单值还是多值。按照适用于要修改的操作类型的步骤操作。

note注意:
下列示例使用集线器传输服务器上可用的传输规则操作。

若要确定要修改的操作类型,请参阅传输规则操作

修改现有的单值操作

首先,将现有传输规则的操作分配给变量,并查看该数组。请使用以下命令语法:

$ActionArray = (Get-TransportRule "Test Rule").Actions

将传输规则的操作分配给变量并查看数组中的操作数

  1. 运行以下命令将操作数组分配给变量:

    $ActionArray = (Get-TransportRule "Test Rule").Actions
    
  2. 运行以下命令查看数组中的操作:

    $ActionArray
    

确定要修改哪个操作,并记录下其数组元素号。数组中的第一个操作为数组元素 0。如果要修改的操作是列表中的第三个操作,则其数组元素号是 2。接下来必须确定操作属性(一个或多个)。所列出的操作属性始终紧靠在以 Name 开头的行之前。

确定数组元素号之后,请使用以下命令语法,将新值分配给该操作:

$ActionArray[<array element number>].<Action Property> = <Single Value>

有关传输规则操作属性的列表及其值的预期格式,请参阅传输规则操作

为数组元素 2 的 SetScl 操作分配值

  • 运行以下命令:

    $ActionArray[2].SclValue = "7"
    

修改现有传输规则

  • 运行以下命令:

    Set-TransportRule "Test Rule" -Action $ActionArray
    
note注意:
由于 $ActionArray 变量已经是数组,因此不必在数组中插入 $ActionArray 变量。

为现有多值操作添加值

首先,必须将现有传输规则的操作分配给变量并查看数组。使用以下命令语法:

$ActionArray = (Get-TransportRule "Test Rule").Actions

将传输规则的操作分配给变量并查看数组中的操作数

  1. 运行以下命令将操作数组分配给变量:

    $ActionArray = (Get-TransportRule "Test Rule").Actions
    
  2. 运行以下命令查看数组中的操作:

    $ActionArray
    

确定要修改哪个操作,并记录下其数组元素号。数组中的第一个操作为数组元素 0。如果要修改的操作是列表中的第三个操作,则其数组元素号是 2。然后必须确定操作的操作属性。操作的操作属性始终列在以 Name 开头的行的前面,如下例所示:

Addresses         : {Legal Group, Regulatory Compliance}
Name              : RedirectMessage
Rank              : 10
LinkedDisplayText : redirect the message to <a id="Addresses">addresses</a>

RejectReason       : Example Message
EnhancedStatusCode : 5.7.1
Name               : RejectMessage
Rank               : 11
LinkedDisplayText  : send <a id="RejectReason">bounce message</a> to sender with <a id ="EnhancedStatusCode">enhanced status code</a>

在此示例中,在数组元素 0 的第一个操作包含操作属性 Addresses。在数组元素 1 的第二个操作包含操作属性 RejectReasonEnhancedStatusCode

若要为现有操作添加新值,请使用以下命令语法:

$ActionArray[<Array Element Number>].<Action Property> += <Array of Values>

有关传输规则操作属性的列表及其值的预期格式,请参阅传输规则操作

为该示例中在数组元素 0 的现有操作添加值

  • 运行以下命令:

    $ActionArray[0].Addresses += @((Get-DistributionGroup "Example Group 1"), (Get-DistributionGroup "Example Group 2))
    

修改现有传输规则

  • 运行以下命令:

    Set-TransportRule "Test Rule" -Action $ActionArray
    
note注意:
不必在数组中插入 $ActionArray 变量,因为 $ActionArray 变量已是数组。

将值从现有多值操作中删除

若要将值从现有操作中删除,必须记录现有值并在操作中重新输入现有值,省略不再需要的值。在执行以下步骤时,现有值将更换为您指定的值。

note注意:
以下步骤适用于只配置少量值的操作。但是,对于配置了数十个或数百个值的操作,此步骤不可行。如果无法手动为操作重新赋值,则建议您使用 ForEach 循环。
有关详细信息,请参阅使用 Exchange 管理外壳

首先,必须将现有传输规则的操作分配给变量并查看数组。使用以下命令语法:

$ActionArray = (Get-TransportRule "Test Rule").Actions

将传输规则的操作分配给变量并查看数组中的操作数

  1. 运行以下命令将操作数组分配给变量:

    $ActionArray = (Get-TransportRule "Test Rule").Actions
    
  2. 运行以下命令查看数组中的操作:

    $ActionArray
    

然后查看要修改的操作的值并将该操作的值替换为要保留的值。有关如何确定操作数组的元素号和操作属性的详细信息,请参阅本主题前文的“为现有多值操作添加值”。请使用以下命令语法:

$ActionArray[<Array Element Number>]

然后将要修改的操作的现有值替换为要保留的值。请使用以下命令语法:

$ActionArray[<Array Element Number>].<Action Property> = <Array of Values>

若要查看传输规则操作属性列表以及其值的预期格式,请参阅传输规则谓词

将值从前面的示例中在数组元素 0 的现有操作中删除

  1. 运行以下命令查看为该操作配置的当前值:

    $ActionArray[0]
    
  2. 运行以下命令将当前值替换为所需值:

    $ActionArray[0].Addresses = @((Get-Mailbox "Kim Akers"),(Get-Mailbox "Frank Lee"))
    

修改现有传输规则

  • 运行以下命令:

    Set-TransportRule "Test Rule" -Action $ActionArray
    
    note注意:
    不必在数组中插入 $ActionArray 变量,因为 $ActionArray 变量已是数组。

详细信息

有关每个命令的详细语法和参数信息,请参阅以下主题:

有关传输规则的详细信息,请参阅下列主题: