如何在 Exchange 管理外壳中修改传输规则条件和例外

 

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

上一次修改主题: 2007-03-20

本主题将介绍如何使用 Exchange 命令行管理程序在安装了 Microsoft Exchange Server 2007 集线器传输服务器角色或边缘传输服务器角色的计算机上修改已配置的现有传输规则的条件和例外。

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

开始之前

在执行下列步骤之前,请参阅如何修改传输规则,其中提供了修改传输规则条件和例外所需的重要信息。

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

  • Exchange 组织管理员角色

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

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

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

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

修改传输规则的条件或例外

用于修改传输规则的条件或例外的步骤非常类似,因为条件和例外使用相同的基础传输规则谓词。本主题中所述的步骤以传输规则条件为例,但是也可以将这些步骤应用于传输规则例外。若要使用下列规则修改传输规则例外,请将 Conditions 更改为 Exceptions。请考虑下面的示例:

  • 若要访问传输规则的条件,请使用以下命令:

    $ConditionArray = (Get-TransportRule "Test Rule").Conditions
    
  • 若要访问传输规则的例外,请使用以下命令:

    $ExceptionArray = (Get-TransportRule "Test Rule").Exceptions
    

为传输规则添加条件

首先,必须保留现有的条件。将条件数组中的每个现有条件分配给其自己的变量。使用以下命令语法将条件数组分配给变量:

$ConditionArray = (Get-TransportRule "<rule name>").Conditions

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

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

    $ConditionArray = (Get-TransportRule "Test Rule").Conditions
    
  2. 运行以下命令查看数组中的条件数:

    $ConditionArray.Length
    

将数组中的每个条件分配给其自己的变量。条件位于数组元素中,数组元素编号为 0$Condition.Length - 1。使用以下语法将每个条件数组元素分配给其自己的变量:

$ExistingCondition<Array Element Number> = $ConditionArray[<Array Element Number>]

将每个条件数组元素分配给其自己的变量

  • 运行以下命令:

    $ExistingCondition0 = $ConditionArray[0]
    $ExistingCondition1 = $ConditionArray[1]
    

然后创建新的条件。不能使用已应用于现有传输规则的条件。使用以下语法将新条件分配给变量:

$NewCondition = Get-TransportRulePredicate <Predicate Name>

有关传输规则谓词的列表,请参阅传输规则谓词

将新条件分配给新变量

  • 运行以下命令:

    $NewCondition = Get-TransportRulePredicate SubjectContains
    

将新条件分配给新变量之后,为该条件赋值。使用以下命令为新条件赋值:

$NewCondition.<PredicateProperty> = <Single Value or Array of Values>

有关传输规则谓词属性及其值应使用的格式的列表,请参阅传输规则谓词

为新条件赋值

  • 运行以下命令:

    $NewCondition.Words = @("Test Subject 1", "Test Subject 2")
    

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

Set-TransportRule <Transport Rule Name> -Condition @(<Conditions>)
note注意:
Set-TransportRule 命令中指定时,必须按照 Rank 对现有条件和新条件进行排序。使用 Get-TransportRulePredicate 命令查看每个条件或例外的等级。

修改现有传输规则

  • 运行以下命令:

    Set-TransportRule "Test Rule" -Condition @($ExistingCondition0, $ExistingCondition1, $NewCondition)
    

将条件从传输规则中删除

若要将条件从传输规则中删除,请执行本主题前面一节所述的下列步骤:

  1. 将传输规则的条件分配给变量并查看数组中的条件数。

  2. 将每个条件数组元素分配给其自己的变量(要删除的条件除外)。

  3. 修改现有传输规则。

将条件从传输规则中删除

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

    $ConditionArray = (Get-TransportRule "Test Rule").Conditions
    
  2. 运行以下命令查看数组中的条件数:

    $ConditionArray.Length
    
  3. 运行以下命令查看 $ConditionArray 变量中的条件并记录要删除的条件的数组元素编号:

    $ConditionArray
    
  4. 运行以下命令将要保留的条件分配给变量,省略不希望保留的条件的数组元素:

    $ExistingCondition1 = $Condition[1]
    ...
    
  5. 运行以下命令修改传输规则,只分配与要保留的条件关联的变量:

    Set-TransportRule "Test Rule" -Condition @($ExistingCondition1)
    

修改传输规则的现有条件的值

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

若要确定要修改的条件类型,请参阅传输规则谓词

修改现有的单值条件

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

$ConditionArray = (Get-TransportRule "Test Rule").Conditions

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

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

    $ConditionArray = (Get-TransportRule "Test Rule").Conditions
    
  2. 运行以下命令查看数组中的条件:

    $ConditionArray
    

确定要修改的条件并记录其数组元素编号。若要找到正确的数组元素编号,请参阅本主题后面的“为现有多值条件添加值”。

确定数组元素编号之后,使用以下命令语法为该条件赋新值:

$ConditionArray[<array element number>].<Predicate Property> = <Single Value>

为数组元素编号 2 的 WithImportance 条件赋值

  • 运行以下命令:

    $ConditionArray[2].Importance = "High"
    

修改现有传输规则

  • 运行以下命令:

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

为现有多值条件添加值

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

$ConditionArray = (Get-TransportRule "Test Rule").Conditions

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

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

    $ConditionArray = (Get-TransportRule "Test Rule").Conditions
    
  2. 运行以下命令查看数组中的条件:

    $ConditionArray
    

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

Addresses                  : {Kim Akers}
LinkedDisplayTextException : except if from <a id="Addresses">people</a>
Name                       : From
Rank                       : 0
LinkedDisplayText          : from <a id="Addresses">people</a>

Words                      : {Corporate Communication, Message from VP, Sales Quotas}
LinkedDisplayTextException : except if with <a id="Words">specific words</a> in the subject
Name                       : SubjectContains
Rank                       : 15
LinkedDisplayText          : with <a id="Words">specific words</a> in the subject

在此示例中,在数组元素 0 的第一个条件包含谓词属性 Addresses。在数组元素 1 的第二个条件包含谓词属性 Words

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

$ConditionArray[<Array Element Number>].<Predicate Property> += <Array of Values>

有关传输规则谓词属性及其值应使用的格式的列表,请参阅传输规则谓词

为该示例中在数组元素 1 的现有条件添加值

  • 运行以下命令:

    $ConditionArray[1].Words += @("Industry Projections", "Sales Forecast")
    

修改现有传输规则

  • 运行以下命令:

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

将值从现有多值条件中删除

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

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

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

$ConditionArray = (Get-TransportRule "Test Rule").Conditions

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

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

    $ConditionArray = (Get-TransportRule "Test Rule").Conditions
    
  2. 运行以下命令查看数组中的条件:

    $ConditionArray
    

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

$ConditionArray[<Array Element Number>]

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

$ConditionArray[<Array Element Number>].<Predicate Property> = <Array of Values>

有关传输规则谓词属性及其值应使用的格式的列表,请参阅传输规则谓词

将值从前面的示例中在数组元素 1 的现有条件中删除

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

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

    $ConditionArray[1].Words = @("Corporate Communication", "Sales Quotas")
    

修改现有传输规则

  • 运行以下命令:

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

详细信息

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

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