Categories: ExchangePowerShell

Импорт и экспорт почтовых ящиков в PST-файлы в Exchange 2016/2013/2010

В Exchange Server 2010 SP1 (и выше) для импорта / экспорта содержимого почтового ящика Exchange из/в PST-файлы появились специальные командлеты PowerShell: New -MailboxImportRequest и New -MailboxExportRequest . В предыдущих версиях Exchange для импорта/экспорт данных из Exchange в PST файлы приходилось использовать сторонние утилиты (чаще всего использовалась утилита ExMerge , знакомство с которым не смог избежать ни один Exchange-администратор).

В Exchange 2016, 2013 и Office 365 разработчики расширили функционал командлетов Exchange для импорта/экспорта в PST файлы, несколько расширив функционал и увеличив их производительность. В этой статье мы рассмотрим типовые примеры импорта/экспорта данных из почтовых ящиков Exchange в файлы личных папок (PST).

Права доступа для импорта или экспорта данных в ящики Exchange

Учетной записи, под которой выполняется импорт или экспорт писем из почтового ящика Exchange, должна быть назначена RBAC роль “Mailbox Import Export” (по-умолчанию этими правами не обладает даже администратор Exchange). Вы можете предоставить администратору Exchange данную роль с помощью Exchange Management Shell:

New-ManagementRoleAssignment –Role “Mailbox Import Export” –User exch_admin_name

Где exch _admin _name – имя учетной записи, которой предоставляются права.

Совет . Для упрощения администрирования роль Mailbox Import Export обычно назначается на группу безопасности AD. Впоследствии, если необходимо предоставить данное право другому пользователю, достаточно будет добавить его учетную запись в эту доменную группу. Синтаксис команды в этом случае немного другой (допустим имя группы AD — ExchangeAdmGroup):

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

Тоже самое можно сделать и из графического интерфейса EAC (Exchange Admin Center), назначив нужному пользователю или группе роль Mailbox Import Export .

После предоставления прав консоль EAC или Exchange Management Shell нужно перезапустить.

New-MailboxImportRequest: Импорт писем из PST-файла в ящик Exchange

Для импорта PST файла в почтовый ящик Exchange помимо наличия прав необходимо, чтобы выполнялись следующие условия:

  1. Целевой ящик Exchange должен существовать;
  2. PST-файл нужно разместить в общей сетевой папке и знать полный UNC путь к нему (не забывайте, что к локальному файлу можно всегда обратится по сетевому пути в формате \PCName111C$PSTtstmail.pst);
  3. У администратора, который выполняет операцию импорта писем в ящик Exchange, должны быть права доступа на сетевой каталог, в котором хранится PST-файл с почтовым архивом.

С помощью следующей команды запустите процесс импорта содержимого PST файла из сетевой папки в почтовый ящик пользователя usetest.

New-MailboxImportRequest -Mailbox mailtst -FilePath \HQFS01PSTusetest.pst

При выполнении импорта в целевом ящике содержимое уже существующих папок объединяется, а новые папки добавляются к имеющейся структуре почтовых папок.

Содержимое PST файла можно импортировать не в корень ящика Exchange, а в одну из уже существующих папку ящика (например, “Import_mail”). Например, нам нужно импортировать из PST только содержимое папки Inbox (Входящие), скопировав его в папку ящика Exchange с именем Import_mail:

New-MailboxImportRequest -Mailbox mailtst -FilePath \HQFS01PSTusetest.pst -TargetRootFolder "Old_mail" -IncludeFolders "#Inbox#"

Совет . Полный список имен стандартных почтовых папок ящика Exchange:
  • Inbox
  • SentItems
  • DeletedItems
  • Calendar
  • Contacts
  • Drafts
  • Journal
  • Tasks
  • Notes
  • JunkEmail
  • CommunicationHistory
  • Voicemail
  • Fax
  • Conflicts
  • SyncIssues
  • LocalFailures
  • ServerFailures

После запуска команды импорта, запрос попадает в очередь на обработку сервером Exchange (обработка выполняется на сервере с ролью Client Access Server). Чтобы увидеть содержимое очереди задания импорта, выполните команду:

Get-MailboxImportRequest

Статус выполнения задания импорта (InProgress, Completed, Queued) для конкретного ящика Exchange можно узнать так:

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 "\HQFS01PST$($i.Alias).pst" }

Если в процессе импорта произошел сбой, более подробную информацию о его причинах можно получить из отчета, сформированного так:

Get-MailboxImportRequest -Status Failed | Get-MailboxImportRequestStatistics -IncludeReport | Format-List > FullImportReports.txt

В большинстве случаях ошибки импорта происходят из-за:

Можно указать лимит количества сбойных элементов PST файлов, которых можно пропустить при экспорте. Следующая команда выполнит импорт данных из PST файла в ящик и пропустит десять первых сбойных элементов, прежде чем выдать ошибку импорта:

New-MailboxImportRequest -Mailbox mailtst -FilePath \HQFS01PSTusetest.pst -BadItemLimit 10

New-MailboxExportRequest: Экспорт почтового ящика Exchange в PST архив

Процедура экспорта содержимого почтового ящика Exchange аналогична импорту. Для экспорта содержимого ящика в PST файл используется командлет New -MailboxExportRequest . Чтобы экспортировать почтовый ящик пользователя mailtst в сетевую папку (каталог должен быть создан предварительно и на него даны права чтения и записи для доменной группы Exchange Trusted Subsystem ) выполните такую команду:

New-MailboxExportRequest –Mailbox mailtst –FilePath \HQFS01ExportPSTmailtst.pst

Если нужно выгрузить в PST-файл только письма из определённой папки, например, Inbox (Входящие), команда будет выглядеть так:

New-MailboxExportRequest –Mailbox mailtst –FilePath \HQFS01ExportPSTmailtst.pst -IncludeFolders “#Inbox#”

Чтобы исключить из выгрузки папку, воспользуйтесь параметром ExcludeFolders. Например, вам не нужно, чтобы в PST файл экспортировалось удаленные элементы:

New-MailboxExportRequest –Mailbox mailtst –FilePath \HQFS01ExportPSTmailtst.pst - ExcludeFolders “#DeletedItems#”

Рассмотрим более сложное задание: допустим, необходимо выгрузить из ящика все письма, полученные после 1 января 2019 года, содержащие в теле письма ключевые слова “MSProject” и “Moscow”.

New-MailboxExportRequest –Mailbox mailtst –FilePath \HQFS01ExportPSTmailtst.pst –ContentFilter {(body –like “*MSProject*”) –and {body –like “*Moscow*”) –and (Received –gt “01/01/2019”)}

Также вы можете экспортировать данные только из определенной папки с результатами поиска по ящикам, полученной с помощью командлета Search-Mailbox .

Задание экспорта также попадает в очередь на сервере Exchange. Чтобы проверить статус задания экспорта, выполните команду:

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

RunspaceId : 2623f0d3-1b4b-4610-b0a2-6f29a077cc54
FilePath : \HQFS01ExportPSTmailtst.pst
SourceDatabase : db1
Mailbox :
Name : MailboxExport
RequestGuid : e03de23f-4376-424a-95fa-53faaf97ebf9
RequestQueue : db1
Flags : IntraOrg, Push
BatchName :
Status : Completed
Protect : False
Suspend : False
Direction : Push
RequestStyle : IntraOrg
OrganizationId :
Identity : mailtstMailboxExport
IsValid : True
ObjectState : New

Не забывайте периодически очищать успешно выполненные запросы на экспорт ящиков в PST файлы:

Get-MailboxExportRequest -Status Completed | Remove-MailboxExportRequest

При экспорте данных из ящика в PST файл, содержимое ящика пользователя на сервере Exchange не очищается.

Вы можете массово выгрузить ящики нескольких пользователей. Создайте текстовый файл следующего формата:

Username, UNCPathtoPst
aaivanov,\HQFS01ExportPSTaaivanov.pst
ebpetrov,\HQFS01ExportPSTebpetrov.pst

Запустите экспорт ящиков пользователей в PST файлы:

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

admin

Share
Published by
admin

Recent Posts

Консоль удаленного рабочего стола(rdp console)

Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…

2 недели ago

Настройка сети в VMware Workstation

В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…

2 недели ago

Логи брандмауэра Windows

Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…

2 недели ago

Правильный способ отключения IPv6

Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…

2 недели ago

Ключи реестра Windows, отвечающие за параметры экранной заставки

Параметры экранной заставки для текущего пользователя можно править из системного реестра, для чего: Запустите редактор…

2 недели ago

Как управлять журналами событий из командной строки

В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…

2 недели ago