В организации случилась неприятная ситуация: центр поддержки по запросу из отдела кадров удалил из системы пользователя, а у этого пользователя был полный тезка, отличия были только в учетной записи... Как вы уже догадались, пользователя удалили не того. Передо мной встала задача восстановить содержимое почтового ящика удаленной учетной записи и передать его пользователю.
Расследовав более подробно этот случай я выяснил, что пользователи на самом деле - это один и тот же человек, только месяц назад он работал как внешний консультант, а теперь его взяли в штат компании. Этому человеку создали полноценную учетную запись сотрудника компании, а старую с ограничениями удалили, удалив и почту.
Решение лежало на поверхности - восстановить удаленный почтовый ящик. Как известно в почтовой системе MS Exchange 2010 ящики не удаляются сразу, а хранятся некоторое время в режиме Disconnected (более подробно можно прочитать тут). То есть я нашел удаленный почтовый ящик, который висел в разделе Disconnected mailbox. Прицепил этот удаленный ящик к тестовой учетной записи, и попробовал выгрузить данные в PST-файл, но сервер выдавал ошибку, что почтового ящика не существует. Оказалось, что это из-за рассинхронизации (запаздывания) данных Active Directory и Exchange (подробнее об этом написано в этой статье).
Итак, чтобы выгрузить почтовый ящик потребовалось:
0. Подготовить тестовую учетную запись и запустить консоль Exchange Management Shell, выполнив в ней команду
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010
1. Обновить информацию об учетных записях в хранилище Exchange.
Clean-MailboxDatabase
2. Прицепить почтовый ящик к тестовой учетной записи.
Connect-Mailbox -Identity "Deleted User" -Database Database01 -User TestUser
3. Еще раз обновить информацию об учетных записях в хранилище Exchange.
Clean-MailboxDatabase
4. Выгрузить почту в PST-файл (восстанавливать старую почту напрямую в почтовый ящик пользователя я не решился).
New-Mailboxexportrequest -Mailbox TestUser -filepath "\\MyComputer\C$\TestUser.PST"
5. Проверить состояние процесса выгрузки почтового ящика.
Get-MailboxExportRequest -Name MailboxExport | fl
6. Удалить завершенные процессы выгрузок ящиков.
Get-MailboxExportRequest -Status Completed | Remove-MailboxExportRequest
7. Отдать пользователю PST-файл со старой почтой и удалить почтовый ящик у тестовой учетной записи.
Remove-Mailbox -Identity TestUser