如何在Exchange 2015/2013/2010中导入和导出邮箱到PST?

时间:2020-01-09 10:46:34  来源:igfitidea点击:

在Exchange Server 2010 SP1(及更高版本)中,出现了特殊的PowerShell cmdlet: New-MailboxImportRequestt和 New-MailboxExportRequest,允许我们从PST文件导入或者导出Exchange邮箱的内容。在以前的Exchange版本中,为了将数据从Exchange导入/导出到PST文件,必须使用第三方实用程序(通常使用ExMerge实用程序)。

在Exchange 2015、2013和Office 365中,Exchange开发团队继续开发用于导入/导出到PST文件的Exchange cmdlet,略微扩展了其功能并提高了其性能。在本文中,我们将介绍从Exchange邮箱导入/导出数据到个人文件夹文件(PST)的典型示例。

交换中的邮箱导入和导出权限

必须将RBAC角色“邮箱导入导出”分配给要将Exchange邮箱导入或者导出到PST的管理帐户(默认情况下,即使Exchange管理员也没有这些权限)。我们可以使用Exchange命令行管理程序将此角色分配给帐户:

New-ManagementRoleAssignment –Role "Mailbox Import Export" –User fr_exchange_admin

其中

fr_exchange_admin

–是获得“邮箱导入导出”角色权限的帐户的名称。

为了便于管理,“邮箱导入导出”角色通常分配给AD安全组。稍后,如果必须将此权限授予其他用户,则只需将该用户帐户添加到此域组即可。在本例中,命令语法稍有不同(假设AD组的名称为ExchangeAdmGroup):

New-ManagementRoleAssignment -Role "Mailbox Import Export" -SecurityGroup ExchangeAdmGroup

通过将邮箱导入导出分配给所需的用户或者组,可以从 EAC(Exchange administration Center)图形界面执行相同的操作。

授予RBAC权限后,重新启动EAC或者Management Shell控制台。

New MailboxImportRequest:正在将PST Fie导入Exchange邮箱

若要将PST文件导入Exchange邮箱,除了RBAC权限外,还需要以下各项:

目标Exchange邮箱必须存在;

PST文件必须位于共享网络文件夹中,并且我们必须知道该文件的完整UNC路径(不要忘了,可以通过网络路径(如\PCName111\C$\PST)访问某台计算机上的本地文件\短信.pst);

执行导入操作的用户必须对包含PST邮件存档文件的网络文件夹具有NTFS读取权限。

使用以下命令将PST文件的内容从共享文件夹导入到用户的邮箱 usertest

New-MailboxImportRequest -Mailbox usetest -FilePath \HQ-FS01\PST\usetest.pst

导入到目标框中时,将合并现有文件夹的内容,并将新文件夹添加到现有邮件文件夹结构中。

PST文件的内容不能导入到Exchange邮箱根目录,而可以导入到邮箱的一个现有文件夹中(例如“Old”mail)。例如,只需将“收件箱”文件夹的内容导入目标邮箱文件夹“旧邮件”:

New-MailboxImportRequest -Mailbox usetest -FilePath \HQ-FS01\PST\usetest.pst  -TargetRootFolder "Old_mail" -IncludeFolders "#Inbox#"

运行import命令后,导入请求将排队等待Exchange服务器处理(处理在具有客户端访问服务器角色的服务器上执行)。要查看导入请求队列,请运行以下命令:

Get-MailboxImportRequest

某个邮箱的导入请求任务状态(正在进行、已完成、已排队)可按如下方式获取:

Get-MailboxImportRequest mailtst

要获取有关导入请求状态的信息(以百分比为单位),请运行以下命令:

Get-MailboxImportRequest | Get-MailboxImportRequestStatistics

可以使用以下命令从队列中删除已完成的导入请求:

Get-MailboxImportRequest -Status Completed | Remove-MailboxImportRequest

要将电子邮件项目从PST文件大容量导入多个用户邮箱,可以使用以下命令(假定PST文件的名称对应于用户邮箱的名称):

Foreach ($i in (Get-Mailbox)) { New-MailboxImportRequest -Mailbox $i -FilePath "\\HQ-FS01\PST\$($i.Alias).pst" }

如果导入过程失败,则可以从生成的报告中获取详细信息,说明其原因,如下所示:

<br></br>Get-MailboxImportRequest -Status Failed | Get-MailboxImportRequestStatistics -IncludeReport | Format-List > AllImportReports.txt

在大多数情况下,导入错误发生的原因是:

  • PST文件结构的逻辑损坏(如何使用scanpst.exe);
  • 如果用户邮箱大小超过指定的限制。

可以指定导入过程中可以跳过的PST文件中的错误项数。以下命令将从PST文件导入到Exchange邮箱中,并跳过前十个失败项,然后生成导入错误:

New-MailboxImportRequest -Mailbox mailtst -FilePath \\HQ-FS01\PST\usetest.pst -BadItemLimit 10

New-MailboxExportRequest:导出Exchange邮箱到PST文件

Exchange邮箱内容的导出类似于导入。导出邮箱的内容为PST文件,使用New-MailboxExportRequestcmdlet。要将mailtst用户的邮箱导出到共享网络文件夹(该目录必须事先创建,并且必须为Exchange受信任子系统域组授予对该文件夹的读写权限),执行以下命令:

New-MailboxExportRequest –Mailbox mailtst –FilePath \\HQ-FS01\ExportPST\mailtst.pst

如果你必须导出一个PST文件,只导出来自特定文件夹的电子邮件项目,例如收件箱,命令是这样的:

New-MailboxExportRequest –Mailbox mailtst –FilePath \\HQ-FS01\ExportPST\mailtst.pst -IncludeFolders “#Inbox#”

要排除导出文件夹,请使用ExcludeFolders参数。例如,您不需要将删除的项目导出到PST文件:

New-MailboxExportRequest –Mailbox mailtst –FilePath \\HQ-FS01\ExportPST\mailtst.pst -ExcludeFolders “#DeletedItems#”

让我们考虑一个更复杂的任务:假设,您必须导出2019年1月1日以后收到的所有电子邮件,其中包含关键字“Project”和“London”。

New-MailboxExportRequest –Mailbox mailtst –FilePath \\HQFS01\ExportPST\mailtst.pst –ContentFilter {(body –like “*Project*”) –and {body –like “*London*”) –and (Received –lt “01/01/2019”)}

还可以仅从具有搜索邮箱搜索结果的特定文件夹导出项,该搜索邮箱的搜索结果是使用搜索邮箱cmdlet获得的。

导出任务请求也在Exchange服务器上排队。需要查看导出任务状态,使用命令:

Get-MailboxExportRequest -Mailbox "mailtst" | Format-List

RunspaceId : 3233f0d3-1b4b-4610-b0a2-6f29a543cc54

FilePath : \HQFS01\ExportPST\mailtst.pst

SourceDatabase : db1

Mailbox :

Name : MailboxExport

RequestGuid : e03de01f-3333-111a-95fa-23faaf97ebf9

RequestQueue : db1

Flags : IntraOrg, Push

BatchName :

Status : Completed

Protect : False

Suspend : False

Direction : Push

RequestStyle : IntraOrg

OrganizationId :

Identity : mailtst\MailboxExport

IsValid : True

ObjectState : New

不要忘记定期清理已完成的邮箱导出到PST文件的请求:

Get-MailboxExportRequest -Status Completed | Remove-MailboxExportRequest

将用户邮箱导出为PST文件时,不会清除Exchange服务器上的用户邮箱内容。

您可以批量导出多个用户邮箱。创建以下格式的csv文本文件:

Username, UNCPathtoPst<br></br>t.holland,\\HQFS01\ExportPST\holland.pst<br></br>d.orr,\\HQFS01\ExportPST\orr.pst

将用户邮箱导出到PST文件:

Import-CSV "C:\ps\user_list_export_pst.csv" | ForEach {New-MailboxExportRequest -Mailbox $_.username -FilePath $_.UNCPathtoPst