Как импортировать и экспортировать почтовый ящик в PST в Exchange 2016/2013/2010?
В Exchange Server 2010 SP1 (и более поздних версиях) появились специальные командлеты PowerShell: New-MailboxImportRequest и New-MailboxExportRequest, которые позволяют импортировать или экспортировать содержимое Обмен почтового ящика из/в PST-файл. В предыдущих версиях Exchange для импорта/экспорта данных из Exchange в PST-файл приходилось использовать сторонние утилиты (чаще всего использовалась утилита ExMerge).
В Exchange 2016, 2013 и Office 365 команда разработчиков Exchange продолжила разработку командлетов Exchange для импорта/экспорта в PST-файлы, немного расширив функционал и повысив их производительность. В этой статье мы рассмотрим типичные примеры импорта/экспорта данных из почтовых ящиков Exchange в файлы личных папок (PST).
Разрешения на импорт и экспорт почтовых ящиков в Exchange
Роль 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), назначив функцию импорта и экспорта почтового ящика нужному пользователю или группе.
После предоставления разрешений RBAC перезапустите консоль EAC или командной консоли.
New-MailboxImportRequest: импорт PST-файла в почтовый ящик Exchange
Чтобы импортировать PST-файл в почтовый ящик Exchange, помимо разрешений RBAC, вам необходимо следующее:
Целевой почтовый ящик Exchange должен существовать;
PST-файл должен находиться в общей сетевой папке, и вам необходимо знать полный UNC-путь к нему (не забывайте, что к локальному файлу на определенном компьютере можно получить доступ по его сетевому пути, например \\PCName111\C$\). PST\tstmail.pst);
Пользователь, выполняющий операцию импорта, должен иметь разрешение NTFS на чтение сетевой папки с файлом почтового архива PST.
Используйте следующую команду, чтобы импортировать содержимое PST-файла из общей папки в почтовый ящик пользователя usertest.
New-MailboxImportRequest -Mailbox usetest -FilePath \\HQ-FS01\PST\usetest.pstПри импорте в целевой ящик содержимое существующих папок объединяется, а новые папки добавляются к существующей структуре почтовых папок.
Содержимое PST-файла можно импортировать не в корень почтового ящика Exchange, а в одну из существующих папок почтового ящика (например, «Old_mail»). Например, вам нужно импортировать только содержимое папки «Входящие» в целевую папку почтового ящика Old_mail:
New-MailboxImportRequest -Mailbox usetest -FilePath \\HQ-FS01\PST\usetest.pst -TargetRootFolder "Old_mail" -IncludeFolders "#Inbox#"Совет. Вот полный список стандартных папок почтового ящика Exchange (Outlook):
- Inbox
- SentItems
- DeletedItems
- Calendar
- Contacts
- Drafts
- Journal
- Tasks
- Notes
- JunkEmail
- CommunicationHistory
- Voicemail
- Fax
- Conflicts
- SyncIssues
- LocalFailures
- ServerFailures
После выполнения команды импорта запрос на импорт ставится в очередь на обработку сервером Exchange (обработка выполняется на сервере с ролью Client Access Server). Чтобы просмотреть очередь запросов на импорт, выполните следующую команду:
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" }
Если процесс импорта не удался, вы можете получить подробную информацию о его причинах из отчета, созданного следующим образом:
Get-MailboxImportRequest -Status Failed | Get-MailboxImportRequestStatistics -IncludeReport | Format-List > AllImportReports.txtВ большинстве случаев ошибки импорта возникают из-за:
Логическое повреждение структуры PST-файла (вы можете восстановить PST-файлы Outlook с помощью scanpst.exe);
Если размер почтового ящика пользователя превышает указанный предел.
Вы можете указать количество плохих элементов в PST-файле, которые можно пропустить во время импорта. Следующая команда импортирует данные из PST-файла в почтовый ящик Exchange и пропустит первые десять неудачных элементов, прежде чем сгенерирует ошибку импорта:
New-MailboxImportRequest -Mailbox mailtst -FilePath \\HQ-FS01\PST\usetest.pst -BadItemLimit 10New-MailboxExportRequest: экспорт элементов почтового ящика Exchange в PST-файл
Экспорт содержимого почтового ящика Exchange аналогичен импорту. Чтобы экспортировать содержимое почтового ящика в PST-файл, используйте командлет New-MailboxExportRequest. Чтобы экспортировать почтовый ящик пользователя 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#”Давайте рассмотрим более сложную задачу: предположим, вам нужно экспортировать все электронные письма, полученные после 1 января 2019 года, содержащие ключевые слова «Проект» и «Лондон».
New-MailboxExportRequest -Mailbox mailtst -FilePath \\HQFS01\ExportPST\mailtst.pst -ContentFilter {(body -like “*Project*”) -and {body -like “*London*”) -and (Received -lt “01/01/2019”)}Также можно экспортировать элементы только из определенной папки с результатами поиска по почтовому ящику, полученными с помощью командлета Search-Mailbox.
Запрос задачи экспорта также ставится в очередь на сервере Exchange. Чтобы просмотреть статус задачи экспорта, выполните следующую команду:
Get-MailboxExportRequest -Mailbox "mailtst" | Format-ListRunspaceId : 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
t.holland,\\HQFS01\ExportPST\holland.pst
d.orr,\\HQFS01\ExportPST\orr.pstЗапустите экспорт почтовых ящиков пользователей в PST-файлы:
Import-CSV "C:\ps\user_list_export_pst.csv" | ForEach {New-MailboxExportRequest -Mailbox $_.username -FilePath $_.UNCPathtoPst




