分享一个之前做过的Exchange邮箱数据文件的导入导出操作示例。目录内容如下:
目录
第一步 新建一个Exchange角色组并将其添加到Mailbox Import Export 管理角色中... 4
第一步 新建一个Exchange角色组并将其添加到Mailbox Import Export 管理角色中
使用命令创建一个角色组名称为Enterprise Mail Support,并将其赋予Mailbox Import Export角色权限,将exadmin加入到成员中。
New-RoleGroup –Name "Enterprise Mail Support" -Roles "Mailbox Import Export" -Members exadmin -Description "Import Export_Enterprise Support"
删除角色组使用命令:Remove-RoleGroup -Identity "Enterprise Mail Support"
get-RoleGroup -Identity "Enterprise Mail Support"
第二步 创建共享文件夹
若要导出邮箱或存档,必须首先创建网络共享文件夹。您需要向在其中导出或导入邮箱的网络共享授予对“Exchange 受信任子系统”组的读/写权限。如果您不授予此权限,则将收到一条错误消息,表明 Exchange 无法建立与目标邮箱的连接。
第三步 创建单个用户邮件导出请求
通过命令将某个用户的归档邮箱邮件导出到PST文件中。
New-MailboxExportRequest -Mailbox exadmin -IsArchive -FilePath "\\127.0.0.1\PST\exadmin.pst"
第四步 将导出的PST文件导入到用户主邮箱
导入过程中如果没有指定导入的目标文件,默认是导入到用户主邮箱的#Inbox#(收件箱里面),PST文件中收件箱中用户自定义的文件会在主邮箱的收件箱中创建(如果该文件夹不存在的情况下)。如果主邮箱中已经存在该封邮件,导入过程中自动跳过重复的邮件。
删除已完成的邮件导入请求
如果想要删除处于完成状态的邮箱导入请求可以运行如下命令:
Get-MailboxImportRequest –Status Completed | Remove-MailboxImportRequest
删除已完成的邮件导出请求
如果需要删除处于完成状态的邮件导出请求可以运行如下命令:
Get-MailboxExportRequest –Status Completed | Remove-MailboxImportRequest
批量导出归档邮箱至PST文件
基于数据库批量导出PST
使用脚本Export-Mail_DB.ps1,该脚本可以将用户的归档邮箱数据按照数据库批量导出到PST文件中,并将各个PST文件存放在以数据库命名的目录中。
运行脚本需要具体的前提条件:
1、 手动创建共享目录,并赋予Exchange信任子系统具有完全访问权限。
2、 操作账号需要属于"Mailbox Import Export"角色组成员。
脚本内容如下:
##以数据库名称为文件名批量创建目录
foreach ($folder in Get-MailboxDatabase db* ) {mkdir \\localhost\pst\$folder\ }
##按照数据库批量导出邮箱用户归档邮箱中邮件到PST文件中,PST文件以“用户名.pst”格式命名。
foreach ($database in get-mailboxdatabase) {foreach ($Mailbox in Get-Mailbox -Database $database -Archive) {$b=$Mailbox.Alias;New-MailboxExportRequest -Mailbox $a -FilePath "\\localhost\pst\$db\$b.pst" -IsArchive}}
运行脚本如图:
运行结果:
使用CSV文件批量导出PST
可以使用脚本Export-Mail_CSV.ps1,该脚本的具体内容就是批量导出CSV文件中的邮箱用户的归档邮件到PST文件中。
使用脚本前需要注意事项:
1、 手动创建共享目录,并赋予Exchange信任子系统具有完全访问权限。
2、 操作账号需要属于"Mailbox Import Export"角色组成员。
在运行脚本前准备好CSV文件(CSV文件可以使用命令get-mailbox -Archive -Database DB01 | ft name,Alias,Sam* > c:\2014.csv来生成文件,然后调整文件格式即可),CSV文件内容格式如下:
示例CSV文件:
脚本内容如下:
$mail = import-csv -path "c:\test01.csv"
##遍历CSV文件内容
Foreach ($user in $mail)
{
$Alias = $user.SamAccountName
##批量导出CSV文件中的邮箱账号的归档邮箱数据到共享目录中,并自动创建以用户名命名的PST文件。共享目录的权限需要设置为Exchange信任子系统具有完全访问权限。
New-MailboxExportRequest -IsArchive -Mailbox $Alias -FilePath "\\127.0.0.1\PST\$Alias.pst"
}
使用脚本ImportMailbox.ps1将PST文件导入到用户的主邮箱中。脚本自动识别PST文件的文件名并将识别到的文件导入到对应的邮箱账户主邮箱中。
脚本内容如下:
Dir \\localhost\PST\*.pst | %{ New-MailboxImportRequest -Mailbox $_.BaseName -FilePath $_.FullName}
运行结果:
查看邮箱导入导入请求状态
使用如下命令查看导入请求状态。
Get-MailboxExportRequest | Get-MailboxExportRequestStatistics
Get-MailboxImportRequestStatistics -Identity 'contoso.com/Exchangeuser/test\MailboxImport1' | fl TargetMailboxIdentity,EstimatedTransferSize,EstimatedTransferItemCount,BytesTransferred,ItemsTransferred,PercentComplete
使用Windows计划任务自动执行脚本
在“管理工具”中打开“任务计划程序”,如图。
选择“创建任务”,如图。
输入任务名称,如图。
选择“新建触发器”,如图。
设置任务运行时间。如图。
如图操作。
在程序或脚本中输入如下命令:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noexit -command ". 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer –auto; .'C:\Export-Mailbox_DB.ps1'"
本文转自 jialt 51CTO博客,原文链接:http://blog.51cto.com/jialt/1953360