从队列导出邮件

 

适用于: Exchange Server 2010 SP2, Exchange Server 2010 SP3

上一次修改主题: 2012-10-30

可以使用命令行管理程序将邮件从安装了 Microsoft Exchange Server 2010 集线器传输服务器角色或边缘传输服务器角色的计算机上的某个队列中导出到指定的文件路径。无法使用队列查看器执行此任务。但在执行此任务之前,可以使用队列查看器查找、标识和挂起邮件。

将邮件从队列中导出到文件时,不会从队列中删除该邮件。将在指定位置创建一份纯文本文件形式的邮件副本。可以在诸如文本编辑器或电子邮件客户端应用程序之类的应用程序中查看结果文件,也可以通过使用 Exchange 组织内外的任何其他集线器传输服务器或边缘传输服务器上的重播目录重新提交邮件文件。

若要了解与管理传输队列相关的其他管理任务,请查看管理传输队列

先决条件

从队列中导出邮件之前,必须执行下列步骤:

  1. 验证与目标目录位置有关的以下信息:

    • 导出任何邮件之前,目标目录必须存在。系统不创建该目录。如果未指定绝对路径,则使用当前的命令行管理程序工作目录。

    • 该路径可以是 Exchange 2010 计算机上的本地路径,也可以是指向远程服务器上共享位置的通用命名约定 (UNC) 路径。

    • 帐户必须拥有对目标目录的写入权限。

  2. 找到并标识要导出的邮件。有关如何查看邮件的信息,请参阅查看排队邮件属性

  3. 挂起要导出的邮件,以防在导出过程中传递这些邮件。要使导出过程成功,邮件必须处于已挂起状态。可以从远程传递队列、邮箱传递队列、无法到达队列或病毒邮件队列导出邮件。病毒邮件队列中的邮件已处于挂起状态。不能挂起或导出提交队列中的邮件。有关如何挂起邮件的信息,请参阅挂起邮件

  4. 指定文件名时,请确保包含 .eml 文件扩展名,以便可以通过电子邮件客户端应用程序轻松地打开文件,或通过重播目录正确地处理文件。

使用命令行管理程序从特定队列中导出特定邮件

传输权限 主题中的您必须先获得权限,然后才能执行此过程。若要查看所需的权限,请参阅“队列”条目。

注释注意:
无法使用 EMC 执行此任务。

本示例将位于服务器 Exchange01 上域 Contoso.com 的远程传递队列中 InternalMessageID 为 1234 的邮件副本导出到路径 C:\Contoso Export\export.eml。

Export-Message -Identity ExchSrv1\contoso.com\1234 | AssembleMessage -Path "c:\exportfolder\filename.eml"

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

使用命令行管理程序从特定队列中导出所有邮件

传输权限 主题中的您必须先获得权限,然后才能执行此过程。若要查看所需的权限,请参阅“队列”条目。

注释注意:
无法使用 EMC 执行此任务。

本示例将服务器 Exchange01 上 Contoso.com 远程传递队列中所有邮件的副本导出到本地计算机上的目录 C:\Contoso Export 中,使用各邮件的 Internet 邮件 ID 作为各自的文件名。若要完成此操作,请执行以下命令:

  • 使用 Get-Message cmdlet 在特定队列中检索所有邮件。

  • 通过管道将结果传输到为每封邮件执行以下操作的 ForEach-Object cmdlet 中:

    • 准备包括完整路径的文件名,完整路径使用的是临时变量 $Temp,此变量由具有 .eml 扩展名的 Internet 邮件 ID 组成。Internet 邮件 ID 字段包含需要删除的尖括号(> 和 <),因为尖括号为无效文件名。这是通过使用临时变量的 Replace 方法来完成的。

    • 使用准备的文件名导出邮件。

Get-Message -Queue "Exchange01\Contoso.com" | ForEach-Object {$Temp="C:\Contoso Export\"+$_.InternetMessageID+".eml";$Temp=$Temp.Replace("<","_");$Temp=$Temp.Replace(">","_");Export-Message $_.Identity | AssembleMessage -Path $Temp}

有关语法和参数的详细信息,请参阅 Get-MessageExport-Message 主题。

使用命令行管理程序从服务器上的所有队列中导出某些特定邮件

传输权限 主题中的您必须先获得权限,然后才能执行此过程。若要查看所需的权限,请参阅“队列”条目。

注释注意:
无法使用 EMC 执行此任务。

本示例将 Contoso.com 域中发件人的所有邮件的副本从服务器 Exchange01 上的所有队列中导出到本地计算机上的目录 C:\Contoso Export 中,使用各邮件的 Internet 邮件 ID 作为各自的文件名。若要完成此操作,请执行以下命令:

  • 使用带有筛选器的 Get-Message cmdlet 检索所有与条件匹配的邮件。

  • 通过管道将结果传输到为每封邮件执行以下操作的 ForEach-Object cmdlet 中:

    • 准备包括完整路径的文件名,完整路径使用的是临时变量 $Temp,此变量由具有 .eml 扩展名的 Internet 邮件 ID 组成。Internet 邮件 ID 字段包含需要删除的尖括号(> 和 <),因为尖括号为无效文件名。这是通过使用临时变量的 Replace 方法来完成。

    • 使用准备的文件名导出邮件。

Get-Message -Filter {FromAddress -like "@Contoso.com"} -Server "Exchange01" | ForEach-Object {$Temp="C:\Contoso Export\"+$_.InternetMessageID+".eml";$Temp=$Temp.Replace("<","_");$Temp=$Temp.Replace(">","_");Export-Message $_.Identity | AssembleMessage -Path $Temp}

有关语法和参数的详细信息,请参阅 Get-MessageExport-Message 主题。

 © 2010 Microsoft Corporation。保留所有权利。