Exchange manage mailboxes

Материал из Записки на полях
Перейти к навигации Перейти к поиску

Ищем всех отключенных пользователей в AD, имеющих почтовый ящик

Get-ADUser -LDAPFilter "(mail=*)" -SearchBase "DC=example,DC=com" | Where-Object {$_.Enabled -eq $false}

Нюанс команды, что на вывод попадают служебные ящики. У меня отключенные учётки собраны в отдельной OU и при поиске в ней проблемы с сервисными ящиками нет.

Создаём запросы на экспорт ящиков отключённых пользователей в PST-файлы

foreach ($i in (Get-ADUser -LDAPFilter "(mail=*)" -SearchBase "DC=example,DC=com" | Where-Object {$_.Enabled -eq $false})) { New-MailboxExportRequest -Mailbox $($i.samaccountname) -BadItemLimit 100000 -FilePath "\\Exports\$($i.samaccountname).pst" }

Нюанс в том, что экспорт можно делать только на шару и только на другой сервер. BadItemLimit указываем, чтобы экспорт не прерывался при накоплении ошибок

Посмотреть процесс экспорта можно так

Get-MailboxExportRequest

или более подробно так

Get-MailboxExportRequest | Get-MailboxExportRequestStatistics

Отключаем ящики, которые были успешно экспортированы

Get-MailboxExportRequest -Status Completed | % {$_.FilePath.Substring(14,$_.FilePath.length-14-4)} | Disable-Mailbox -Confirm:$false

Цифра 14 подбирается индивидуально - это количество обрезаемых символов в строке полного пути для PST-файлов. 4 скорее всего будет для всех одинаково, т.к. это обрезается расширение ".pst") Для примера - путь к файлу \\server.example.com\shara\folder\user.pst. Тогда требуется обрезать первые 34 символа.

Удаляем успешно выполненные задачи по экспорту

Get-MailboxExportRequest -status Completed | Remove-MailboxExportRequest -Confirm:$false

Проверяем что осталось

Get-MailboxExportRequest

И ищем причины ошибок.

Ну и просто удалить ящики

foreach ($i in (Get-ADUser -LDAPFilter "(mail=*)" -SearchBase "DC=example,DC=com" | Where-Object {$_.Enabled -eq $false})) { Disable-Mailbox -identity $($i.samaccountname) -confirm:$false}

Несколько полезных команд

Статистика по папкам в ящике пользователя с сортировкой по размеру.

Get-MailboxFolderStatistics  -Identity username | Sort-Object FolderSize -Descending | ft Name,FolderPath,FolderSize,FolderAndSubfolderSize -autosize

Размер всех почтовых ящиков с сортировкой

Get-MailboxStatistics -Server server | Sort-Object TotalItemSize -Descending | ft Displayname,Totalitemsize

Размер почтовых баз

Get-MailboxDatabase -Status | ft name,databasesize, availablenewmailboxspace -AutoSize