Данная памятка — шпаргалка по работе с почтовыми базами Microsoft Exchange (версии 2010, 2013, 2016). В ней собраны команды PowerShell и инструкции по основным задачам: перемещение базы, дефрагментация, управление копиями в DAG и др.
⚠️ Важно: любая операция с базой может привести к потере данных. Обязательно наличие актуальной резервной копии перед началом.
Содержание
- Просмотр содержимого базы
 - Дефрагментация
 - Перемещение файла базы
 - Перемещение почтовых ящиков
 - Удаление копии базы в DAG
 - Активация активной копии базы в DAG
 - Ведение циклического журнала
 - Ручное удаление файлов журнала
 - Переиндексация базы
 - Перенос отключённых почтовых ящиков
 
Просмотр содержимого базы
 — список всех баз данных.Get-MailboxDatabase
 — пути к файлам базы и журналов.Get-MailboxDatabase | fl Name, EdbFilePath, LogFolderPath
 — статистика по базе “Base1”.Get-MailboxStatistics -Database "Base1"
 — список ящиков в “Base1”.Get-Mailbox | Where {$_.Database -eq "Base1"}
 — сортировка ящиков по размеру.Get-Mailbox -Database Base1 | Get-MailboxStatistics | sort TotalItemSize -descending | ft DisplayName, TotalItemSize, ItemCount
 — общий отчет.Get-MailboxStatistics -Database Archive | Sort TotalItemSize -descending | ft DisplayName, TotalItemSize
 — системные ящики.Get-Mailbox -Arbitration | FL Name, DisplayName, ServerName, Database, AdminDisplayVersion
Дефрагментация
 — размер базы и свободное место.Get-MailboxDatabase -Status | ft Name, DatabaseSize, AvailableNewMailboxSpace
Офлайн дефрагментация:
Dismount-Database Base1 eseutil /d Base1.edb /t \\share\base1_tmp.edb Mount-Database Base1
Перемещение файла базы
Get-MailboxDatabase Base1 | fl Name, Guid Move-DatabasePath -Identity <GUID> -EdbFilePath D:\NewPath\EdbName.edb -LogFolderPath D:\NewPath\Logs
Перемещение почтовых ящиков
Все ящики из базы:
Get-Mailbox -Database "Base1" | New-MoveRequest -TargetDatabase "Base2" Get-Mailbox -Database "Base1" -Arbitration | New-MoveRequest -TargetDatabase "Base2"
Один ящик:
New-MoveRequest -Identity 'user' -TargetDatabase Base7
Освобождение места:
Get-MailboxDatabase | Select Name, MailboxRetention Set-MailboxDatabase -MailboxRetention '0.00:00:00' -Identity 'Base1'
Удаление копии базы в DAG
Remove-MailboxDatabaseCopy -Identity Base1\Server1 -Confirm:$False
Активация активной копии базы в DAG
Move-ActiveMailboxDatabase DB5 -ActivateOnServer SERVER15 -MountDialOverride:None -Confirm:$false
Ведение циклического журнала
Set-MailboxDatabase -CircularLoggingEnabled $true -Identity 'Base1' Set-MailboxDatabase -CircularLoggingEnabled $false -Identity 'Base1'
Ручное удаление файлов журнала
cd "C:\...\Mailbox\Base1" ls E*.chk eseutil /mk .\E05.chk
Переиндексация базы
Одна копия:
cd "\Program Files\Microsoft\Exchange Server\V14\Scripts" .\ResetSearchIndex.ps1 BASE1
В DAG:
Get-MailboxDatabaseCopyStatus -Identity DAG01 | Format-List Name, ContentIndexState Move-ActiveMailboxDatabase DAG01 -ActivateOnServer Server2 -MountDialOverride:None Update-MailboxDatabaseCopy -Identity "DAG01\Server1" -SourceServer Server2 -CatalogOnly Move-ActiveMailboxDatabase DAG01 -ActivateOnServer Server1 -MountDialOverride:None
Перенос отключённых почтовых ящиков
Get-MailboxDatabase -Identity "OldBase" | Get-MailboxStatistics | Where {$_.DisconnectReason} | ft DisplayName,Identity,DisconnectReason
Connect-Mailbox -Identity "<GUID>" -Database "OldBase" -User "User Name"
Disable-Mailbox -Identity "User Name"
New-MoveRequest -Identity user@test.local -TargetDatabase "NewBase" -ArchiveTargetDatabase "NewBase" -BadItemLimit 10
New-MigrationBatch -Local -AutoStart -AutoComplete -Name "Migration task" -CSVData ([System.IO.File]::ReadAllBytes("C:\User_list.csv")) -TargetDatabases "NewBase" -BadItemLimit 10FAQ — Часто задаваемые вопросы
1. Можно ли выполнять дефрагментацию базы без отключения?
Нет, дефрагментация выполняется только офлайн, поэтому база должна быть отключена.
2. Что делать, если база не монтируется после перемещения?
Проверьте правильность путей к файлам EDB и журналам, а также наличие прав у службы Exchange.
3. Сколько времени занимает перенос почтовых ящиков?
Зависит от размера ящиков и скорости дисковой подсистемы. Маленькие ящики переносятся за минуты, крупные — часами.
4. Нужно ли удалять старые журналы вручную?
При правильно настроенном резервном копировании журналы удаляются автоматически. Ручное удаление требуется только в аварийных случаях.
5. Что означает Circular Logging?
Это режим, когда новые журналы перезаписывают старые. Экономит место, но уменьшает возможности восстановления данных.


