Адміністратор Exchange може переміщати ящики користувачів між поштовими базами на одному сервері або між віддаленими mailbox серверами. У цій статті ми розглянемо, як переміщати поштові скриньки в Exchange за допомогою Exchange Admin Center і PowerShell (стаття актуальна для всіх підтримуваних версій 2010/2013/2016/2019, з невеликими застереженнями щодо графічного інтерфейсу керування Exchange).

Найчастіше ящики в організації Exchange переміщують, якщо користувач перемістився на інший майданчик з власними поштовими півночі; коли закінчується місце на диску, де зберігається поточна база; коли потрібно виконати офлайн дефрагментацію бази без переривання поштового сервісу для користувачів.

Зверніть увагу, що переміщення і видалення ящика не зменшить розмір фалів поштової бази на диску, а лише звільнить місце всередині бази (white space). Місце, що звільнилося в базі може використовуватися для зберігання поштових елементів залишилися користувачів. Для зменшення розміри бази Exchange потрібно виконати її офлайн дефрагментацію, або просто перебудувати (попередньо перемістивши користувачів в інші поштові бази).

Для перенесення поштової скриньки з однієї бази в іншу, потрібно створити запит на переміщення. Є три типи запиту на переміщення:

  • Місцевий переїзд – локальний запит на перенесення ящика всередині одного лісу (з однієї бази в іншу на тому ж самому поштовому сервері, або на інший сервер в цій же організації Exchange);
  • Переїзд міжлісового підприємства – перенесення поштових скриньок між різними лісами Active Directory;
  • Remote mailbox moves in hybrid deployments – перенесення поштових скриньок в гібридних конфігураціях (між локальна біржа та Office 365).

Переміщення поштових скриньок за допомогою Exchange Admin Center

За допомогою Центр адміністрування Exchange ви можете перемістити один або кілька скриньок користувачів.

  1. Відкрийте EAC і перейдіть на вкладку Одержувачі -> Міграції;
  2. Натисніть кнопку + і виберіть пункт Перейти до іншої бази даних; Exchange Admin Center переміщення ящика
  3. Виберіть облікові записи, ящики яких потрібно перемістити; вибір користувачів, чиї поштові скриньки потрібно перемістити

    Можна вказати список користувачів для перенесення в CSV файлі і завантажити його в EAC.

  4. Потім потрібно вказати цільову поштову базу, в яку потрібно перемістити ящики; вказати цільову база даних exchange, в яку потрібно перенести ящики
  5. Далі ви можете вказати, чи потрібно запустити переміщення відразу, або пізніше, а також вказати адресу, з якої потрібно доставити звіт про успішне переміщення ящика. запус міграції ящиків exchange

Я сам практично не користуюся можливостями переміщення ящиків через EAC, тому що за допомогою PowerShell можна виконати ці дії набагато зручніше і швидше.

Управління переміщенням скриньок Exchange за допомогою PowerShell

Щоб дізнатися, в який поштової базі знаходиться ящик користувача, запустіть Exchange Management Shell і виконайте команду:

Get-Mailbox aaivanov| Format-List Database

Get-Mailbox Database - визначити базу в якій знаходиться ящик користувача

У цьому прикладі скриньку користувача знаходиться в базі DB01.

Для створення локального запиту на перенесення ящика використовується командлет New-MoveRequest. наприклад:

New-MoveRequest -Identity aaivanov -TargetDatabase "MBX01" –BadItemLimit 10

Крім імені користувача важливі параметри це:

  • TargetDatabase – ім’я цільової поштової бази, в яку потрібно перемістити ящик;
  • BadItemLimit – кількість пошкоджених елементів в ящику, яке можна пропустити (ігнорувати) при перенесенні ящику.

    Якщо вказати BadItemLimit 0, значить при наявності хоча б одного пошкодженого елемента, скриньку не буде переміщений і залишиться в вихідній базі. Якщо ви вказали значення BadItemLimit > 50, потрібно додатково вказувати ключ AcceptLargeDataLoss.

Командлет поверне розмір ящика і архіву (TotalMailboxSize, TotalArchiveSize) і повідомлення про те, що запит на перенесення доданий в чергу (Queued)

New-MoveReques TargetDatabase BadItemLimit

Для перенесення всіх ящиків з однієї поштової бази Exchange в іншу, використовуйте команду:

Get-Mailbox -Database DB01 -ResultSize Unlimited | New-MoveRequest -TargetDatabase DB02

Зверніть увагу, що для перенесення системних ящиків потрібно використовувати параметр Арбітраж:

Get-Mailbox -Database DB01 -Arbitration | New-MoveRequest -TargetDatabase DB02

У файлі конфігурації MSExchangeMailboxReplication.exe.config (C: Program Files Microsoft Exchange Server V15 Bin) можна змінити налаштування міграції ящиків. Наприклад, ви можете вказати скільки одночасних операцій переміщення підтримується для однієї бази або сервера. Це параметри MaxActiveMovesPerSourceMDB, MaxActiveMovesPerTargetMDB, MaxActiveMovesPerSourceServer, MaxActiveMovesPerTargetServer.

Залежно від розміру скриньки та місця розташування цільового сервера, його перенесення може зайняти тривалий час. Для відстеження статусу міграції поштової скриньки в% використовується командлет Get-MoveRequestStatistics.

Get-MoveRequestStatistics -Identity aaivanov

В даному прикладі статус перенесення – InProgress, відсоток завершення (PercentComplete) – 26%.

Get-MoveRequestStatistics

Можна вивести статус всіх запитів на переміщення ящиків в організації:

Get-MoveRequest | Get-MoveRequestStatistics

Після того, як перенесення завершено, значення PercentComplete досягне 100, а статус перенесення зміниться на Completed.

Get-MoveRequest PercentComplete Завершено

Можна вивести статистику тільки по незавершеним операціям перенесення:

Get-MoveRequest | where {$_.status -ne "completed"} | Get-MoveRequestStatistics | ft -a displayname,status*,percent

Вивести всі ящики в процесі переміщення або очікування в черзі:

Get-MoveRequest -movestatus inprogress
Get-MoveRequest -movestatus queued

Якщо при перенесенні сталася помилка, можна вивести її командою:

Get-MoveRequest aaivanov | Get-MoveRequestStatistics | fl *failure*, message

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

Get-MoveRequest -resultsize unlimited | Where-Object {$_.status -like “failed”} | Get-MoveRequestStatistics -IncludeReport | select DisplayName, Message, FailureType, FailureSide, FailureTimeStamp, *bad*, *large*, Report, Identity | fl

Якщо потрібно скасувати переміщення ящика, виконайте:

Remove-MoveRequest -Identity aaivanov

Щоб видалити успішно завершені запити на переміщення (без цього ви не зможете перенести цей ящик в наступний раз), виконайте:

Get-MoveRequest -MoveStatus Completed | Remove-MoveRequest

Пакетний перенесення ящиків в Exchange

Для більш зручного відстеження переміщення ящиків можна використовувати параметр –BatchName. Наприклад, щоб перенести всі ящики з однієї поштової бази в іншу в пакетному режимі, виконайте:

Get-Mailbox -Database DB01 | New-MoveRequest -TargetDatabase DB02 -BatchName DB01toDB02Move20200915

Тепер, щоб отримати статус міграції всіх ящиків в цьому пакеті потрібно вказати його ім’я:

Get-MoveRequest -BatchName DB01toDB02Move20200915| Get-MoveRequestStatistics

Так ви зможете переконатися, що все ящики з вашого завдання успішно перенесені.

Можна тимчасово призупинити перенесення поштових скриньок:

Get-MoveRequest | ? {$_.Batchname –like “*DB01toDB02Move20200915”}|Set-MoveRequest –SuspendWhenReadytoCompleate

Або продовжити міграцію:

Get-MoveRequest | ? {$_.Batchname –like “*DB01toDB02Move20200915”|Resume-MoveRequest

В Exchange 2013, 2016, 2019 і Exchange Online можна переміщати кілька ящиків з допомогою пакетного режиму (командлет Новий пакет міграції). Список ящиків для міграції потрібно вказати в CSV файлі, а потім виконати команду:

New-MigrationBatch -Local -AutoStart -AutoComplete -Name DB01Move20200915 -CSVData ([System.IO.File]::ReadAllBytes("C:PSDB01Move20200915.csv")) -TargetDatabases DB02 -BadItemLimit 10

Для перенесення тільки основного ящика вкажіть параметр PrimaryOnly, Щоб перенести архівний поштову скриньку – ArchiveOnly.

Leave a Reply

Your email address will not be published. Required fields are marked *