如何导入地址重写条目

 

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

上一次修改主题: 2007-02-19

本主题介绍如何使用 Exchange 命令行管理程序,在安装了 Microsoft Exchange Server 2007 边缘传输服务器角色的计算机上导入地址重写条目。

可以使用 Exchange 命令行管理程序在边缘传输服务器上批量导入地址重写条目。在下列一些常用的方案中,您可能希望批量导入地址重写条目:

  • 迁移   可能希望从被边缘传输服务器解决方案取代的前一个解决方案中批量导入地址重写条目。

  • 外包   在与第三方解决方案提供商订立了协议而必须重写其电子邮件地址时,可能必须批量导入地址重写条目。

  • 收购   如果收购其他组织时要求临时重写被收购组织的电子邮件地址,可能必须批量导入地址重写条目。

如果有多个边缘传输服务器,建议您使用下列步骤将地址重写条目导入一个边缘传输服务器,然后将该边缘传输服务器的配置克隆到组织中的其他边缘传输服务器上。

有关如何克隆边缘传输服务器的详细信息,请参阅使用边缘传输服务器克隆配置

开始之前

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

在尝试使用逗号分隔值 (CSV) 文件批量导入地址重写条目之前,必须熟悉如何创建地址重写条目。有关如何创建地址重写条目的信息,请参阅如何新建地址重写条目

步骤

下列各节帮助您了解如何使用 CSV 文件导入地址重写条目:

  • 创建 CSV 文件   本节介绍可以用于导入地址重写条目的 CSV 文件中的必填字段和可选字段。本节还介绍在 CSV 文件中使用 ExceptionListOutboundOnly 参数时的具体要求。

  • 了解如何在 New-AddressRewriteEntry Cmdlet 中使用 CSV 文件   本节介绍 Exchange 命令行管理程序如何格式化 CSV 文件中包含的数据并使用这些数据导入地址重写条目。

  • 导入 CSV 文件以创建多个地址重写条目   本节以上述各节中的信息为基础,介绍如何使用所需的 Exchange 命令行管理程序命令导入 CSV 文件并使用该文件创建多个地址重写条目。

创建 CSV 文件

首先,必须创建一个 CSV 文件,包含与 New-AddressRewriteEntry cmdlet 所需的参数相关的值列。下列值是 New-AddressRewriteEntry cmdlet 必需的,因此,在 CSV 文件中必须包含相应的列:

  • Name   此参数必须是唯一标识地址重写条目的字符串。

  • InternalEmailAddress   此参数指定要重写的内部简单邮件传输协议 (SMTP) 地址。

  • ExternalEmailAddress   此参数指定要重写的外部 SMTP 地址。

下列参数是可选参数。如果需要,可以在 CSV 文件中包含这些参数的列:

  • ExceptionList   此参数指定不应重写的子域的列表。不会重写指定子域中包含的任何 SMTP 地址。

  • OutboundOnly   此参数指定地址重写条目应重写 Exchange 2007 组织的入站邮件和出站邮件上的 SMTP 地址,还是只重写 Exchange 2007 组织的出站邮件上的 SMTP 地址。

如果为 CSV 文件中的 ExceptionListOutboundOnly 列指定了值,每一行在该列中必须包含值。例如,如果在 CSV 文件的任意行中为 ExceptionList 列指定了值,CSV 文件中的所有其他行也将在该列中包含值。这是因为命令行中的 ExceptionList 参数期望从 CSV 文件获取值。

有关这些列表中的每个参数的详细信息,请参阅 New-AddressRewriteEntry

在 CSV 文件中包含 ExceptionList 参数时的具体要求

如果希望创建多个地址重写条目,其中某些条目需要 ExceptionList 参数的值,某些条目不需要,必须将这些地址重写条目分开,并创建各自的 CSV 文件,然后分别导入每个 CSV 文件。此外,还必须为 ExceptionList 参数中使用的值加上双引号 (")。如果希望指定多个具有 ExceptionList 参数的域,必须使用逗号 (,) 分隔每个值。例如,字符串 "domain1.com,domain2.com, domain3.com" 包含的三个域已加上双引号并使用逗号分隔。

在 CSV 文件中包含 OutboundOnly 参数时的具体要求

如果在 CSV 文件的某一行的 OutboundOnly 列中指定了值,则必须在该 CSV 文件中每个其他行的 OutboundOnly 列中指定值,与 ExceptionList 参数相同。但是,可以很容易满足此要求,只要指定每一行中的 OutboundOnly 参数应为 True 还是 False 即可。

与 Exchange 命令行管理程序中其他地方的布尔值用法不同,在为 CSV 文件中的 OutboundOnly 参数指定值时,必须指定值 TrueFalse,而不是 $True$False。这是因为在命令行中解释 CSV 文件时,会将 CSV 文件中的值手动转换为布尔值。

有关何时必须使用 OutboundOnly 参数以及如何使用 OutboundOnly 参数的详细信息,请参阅规划地址重写中的“考虑使用仅出站地址重写”一节。

填充了可选参数的 CSV 文件示例

以下示例说明如何填充包含可选的 ExceptionListOutboundOnly 参数的 CSV 文件:

Name,InternalAddress,ExternalAddress,ExceptionList,OutboundOnly
"Wingtip UK", *.wingtiptoys.co.uk, tailspintoys.com,"legal.wingtiptoys.co.uk,finance.wingtiptoys.co.uk,support.wingtiptoys.co.uk",True
"Wingtip USA", *.wingtiptoys.com, tailspintoys.com,"legal.wingtiptoys.com,finance.wingtiptoys.com,support.wingtiptoys.com,corp.wingtiptoys.com",True
"Wingtip Canada", *.wingtiptoys.ca, tailspintoys.com,"legal.wingtiptoys.ca,finance.wingtiptoys.ca,support.wingtiptoys.ca",True

以下示例说明如何填充包含可选的 OutboundOnly 参数的 CSV 文件:

Name,InternalAddress,ExternalAddress,OutboundOnly
"Contoso Sales",*.sales.contoso.com,contoso.com,True
"Contoso Research",*.research.contoso.com,contoso.com,True
"Contoso UK",*.contoso.co.uk,contoso.com,True
"Contoso Japan",*.contoso.co.jp,contoso.com,True
"Contoso Support",support@adatum.com,support@contoso.com,False
"Contoso Financial External",contosofinancial@woodgrovebank.com,financialinqueries@contoso.com,False

了解如何在 New-AddressRewriteEntry Cmdlet 中使用 CSV 文件

若要使用 CSV 文件导入地址重写条目,必须使用 Import-Csv cmdlet。Import-Csv cmdlet 读取 CSV 文件并将 CSV 文件中的每一行作为数组元素输出,将该行中的每一列作为该数组元素的属性输出。在本主题前面内容中的“填充了可选参数的 CSV 文件示例”中,可以看到如何使用 CSV 文件执行此 cmdlet。在将示例中的文本复制到名为 example.csv 的文件之后,使用以下命令导入示例 CSV 文件:

$CsvContents = Import-Csv c:\example.csv

然后,在命令行上键入以下命令:

$CsvContents

将返回以下数据:

Name                InternalAddress     ExternalAddress     OutboundOnly
----                ---------------     ---------------     ------------
Contoso Sales       *.sales.contoso.com contoso.com         True
Contoso Research    *.research.conto... contoso.com         True
Contoso UK          *.contoso.co.uk     contoso.com         True
Contoso Japan       *.contoso.co.jp     contoso.com         True
Contoso Support     support@adatum.com  support@contoso.com False
Contoso Financia... contosofinancial... financialinqueri... False

如果希望只查看第三行的 InternalAddress 列中包含的值,可以使用以下命令:

$CsvContents[2].InternalAddress

此命令返回值 *.contoso.co.uk

note注意:
数组始终以 0 开头。因此,若要从第三行检索值,必须指定数组元素 2。有关数组的详细信息,请参阅阵列

了解此示例可以使您更容易了解 Exchange 命令行管理程序如何处理 CSV 文件并使用 CSV 文件将数据传递给 New-AddressRewriteEntry cmdlet。

正如此示例中所示,CSV 文件中的每一行将成为一个数组元素,每一列将成为该数组元素的一个属性。使用 ForEach cmdlet,Exchange 命令行管理程序可以在数组中自动从开头移动到结尾,并在遇到每个数组元素(在此示例中是 CSV 文件中的一行)时执行操作。将数组元素通过管道传递给 ForEach cmdlet 之后,Exchange 命令行管理程序可以访问其中存储的属性。在此示例中,属性是每一行中包含的列。

然后,可以使用这些属性构造创建地址重写条目所需的 New-AddressRewiteEntry 命令。属性使用 CSV 文件中的列标题命名。不必与 cmdlet 上的参数名匹配。以下命令是按照此示例的说明构造的:

Import-Csv c:\example.csv | ForEach { New-AddressRewriteEntry -Name $_.Name -InternalAddress $_.InternalAddress -ExternalAddress $_.ExternalAddress -OutboundOnly ([Bool]::Parse($_.OutboundOnly)) -ExceptionList ($_.ExceptionList.Split(","))}
note注意:
不必按照本节开头的示例中所示将导入的 CSV 文件赋给变量。只须按照此示例中所示,使用 Import-Csv cmdlet 并将该 cmdlet 的输出通过管道传递给 ForEach cmdlet。

此命令循环处理 example.csv 文件中的每一行,然后使用 New-AddressRewriteEntry cmdlet,利用从每一行中存在的列中获取的参数值来创建地址重写条目。

您可能会注意到此命令中的特殊变量 $_。特殊变量 $_ 指示命令检查管道中的当前对象。在此示例中是 CSV 文件的当前行。

OutboundOnlyExceptionList 属性在各自的属性前后还有其他文本。文本 ([Bool]::Parse($_.OutboundOnly)) 指示 Exchange 命令行管理程序将 OutboundOnly 属性中包含的字符串解释为布尔值。文本 ($_.ExceptionList.Split(",")) 指示 Exchange 命令行管理程序使用逗号分隔 ExceptionList 属性中包含的多个值。如果 ExceptionList 属性前后没有文本,ExceptionList 属性中包含的值将被视为一个字符串,即使存在逗号也是如此。

有关管道传输的详细信息,请参阅管道传输

导入 CSV 文件以创建多个地址重写条目

既然您已了解了背景知识,现在可以创建 CSV 文件并使用该文件创建多个地址重写条目。创建的 CSV 文件至少应包含 NameInternalAddressExternalAddress 列。如果希望为 ExternalAddressOutboundOnly 参数指定值,也应添加这两列。记住,每一行在每一列中必须包含值。有关格式正确的 CSV 文件的示例,请参阅本主题前面内容中的“填充了可选参数的 CSV 文件示例”中的示例。

使用以下命令语法,利用 CSV 文件创建多个地址重写条目:

Import-Csv <CSV file path> | ForEach { New-AddressRewriteEntry -Name $_.<Name CSV column heading> -InternalAddress $_.<InternalAddress CSV column heading> -ExternalAddress $_.<ExternalAddress CSV column heading> -OutboundOnly ([Bool]::Parse($_.<OutboundOnly CSV column heading>)) -ExceptionList ($_.<ExceptionList CSV column heading>.Split(","))}

若要在 Exchange 命令行管理程序中使用 CSV 文件创建多个地址重写条目,请执行下列操作:

  1. 创建并填充名为 C:\ImportAddressRewriteEntries.csv 的 CSV 文件

  2. 运行以下命令:

    Import-Csv c:\ImportAddressRewriteEntries.csv | ForEach { New-AddressRewriteEntry -Name $_.Name -InternalAddress $_.InternalAddress -ExternalAddress $_.ExternalAddress -OutboundOnly ([Bool]::Parse($_.OutboundOnly)) -ExceptionList ($_.ExceptionList.Split(","))}
    

有关语法和参数的详细信息,请参阅 New-AddressRewriteEntry