Відновлення ящиків і окремих листів в Exchange 2013

Продовжуємо серію статей про резервне копіювання і відновлення поштової бази сервера Exchange 2013. У попередніх статтях ми показали як створити резервну копію поштової бази Exchange 2013 і як відновити її в спеціальну базу (recovery database). У цій статті розглянемо процес відновлення з резервної копії конкретного ящика (цілком і конкретних папок) і окремих листів.

Отже, в минулій статті ми зупинилися на тому, що підключили і змонтували (перевели в режим онлайн) в окрему базу для відновлення (Recovery mailbox database) відновлену з резервної копії резервну копію поштової бази Exchange 2013. Подивитися список ящиків, які містяться в відновленої поштової базі можна за допомогою командлета Powershell Get-MailboxStatistics:

Get-MailboxStatistics -Database RDB

Де RDB - ім'я recovery mailbox бази

Якщо вас цікавить конкретний ящик, висновок попередньої команди можна відфільтрувати за допомогою такої конструкції:

Get-MailboxStatistics -Database RDB | ? $ _. DisplayName -like 'Petrov *'

Для відновлення ящиків в Exchange 2013 використовується командлет New-MailboxRestoreRequest.

Щоб відновити вмісту окремого ящика в вихідний поштову скриньку скористаємося такою командою:

New-MailboxRestoreRequest -SourceDatabase RDB -SourceStoreMailbox "Petrov Ivan" -TargetMailbox ipetrov -AllowLegacyDNMismatch

У цьому прикладі з бази RDB відновлюється поштову скриньку з DisplayName "Petrov Ivan" в поштову скриньку з псевдонімом "ipetrov" існуючої бази. За замовчуванням командлет New-MailboxRestoreRequest шукає в поштовій базі збігаються LegacyExchangeDN або перевіряє збіг адреси X500. Зроблено це для того, щоб адміністратор випадково не відновив дані в невірне місце. Якщо дійсно потрібно відновити дані в інший ящик, потрібно вказувати ключ AllowLegacyDNMisMatch.

Порада. Після створення запиту на відновлення ящика, запит потрапляє в чергу (статус Queued). Відстежити статус виконання запиту можна за допомогою командлетів Get-MailboxRestoreRequest і Get-MailboxRestoreRequestStatistics. Формат команди такий:

Get-MailboxRestoreRequestStatistics -Identity MailboxUser \ RestoreRequestName

Дані з відновленого ящика можна скопіювати в окрему папку в ящику користувача. Припустимо, якщо потрібно відновити вміст поштової скриньки в окрему папку "Restored Items", команда буде виглядати так:

New-MailboxRestoreRequest -SourceDatabase RDB -SourceStoreMailbox "Petrov Ivan" -TargetMailbox ipetrov -TargetRootFolder "Restored Items" -AllowLegacyDNMismatch

Після закінчення процесу відновлення в поштовій скриньці користувача з'явиться нова папка, в якій і буде міститися вміст відновленого ящика.

Можливо відновити як вміст ящика цілком, так і окремі папки. Відновити папку Inbox (Вхідні) можна так:

New-MailboxRestoreRequest -SourceDatabase RDB -SourceStoreMailbox "Petrov Ivan" -TargetMailbox ipetrov -IncludeFolders "# Inbox #"

Ключ -IncludeFolders приймає список папок. Імена папок потрібно обрамляти тегом # (хеш). Наприклад, так # SentItems #, # Contacts #, # Tasks #.

Також можливо відновити окремий лист або листи з певними ключовими словами, які містяться в темі (Subject) або тілі (Body) листи. Наприклад, нам потрібно знайти і відновити лист з ключовими словами "windows server 2012" в темі і словом "MAK key" в тексті листа:

Restore-Mailbox -Identity IT-admin -RecoveryDatabase RDB -SubjectKeywords "windows server 2012" -ContentKeywords "MAK key"

Кожен запит на відновлення даних з Exchange після успішного виконання не видаляється їх черзі. Щоб видалити з системи всі успішно виконані запити, виконайте команду:

Get-MailboxRestoreRequest -Status Completed | Remove-MailboxRestoreRequest