В одной из прошлых статей мы говорили о восстановлении удаленных почтовых ящиков на сервере Exchange. Умение оперативно восстановить удаленные ящики – это хорошо, но иногда этого не достаточно. Бывают ситуации, когда необходимо знать, как выполнить очистку базы данных от «недоудаленных» почтовых ящиков. В этой статье речь пойдет именно о том, как реализовать подобную задачу на серверах Exchange 2007, 2010 и 2010 SP1.
Сервера Exchange 2007/2010
Что касается этих серверов, то здесь ни чего сложного нет. Если вы хотите удалить все отключенные ящики на сервере, то необходимо взять стандартный командлет Remove-Mailbox, и применить его по отношению к набору почтовых ящиков. Массив из отключенных ящиков мы можем получить точно таким же способом, как и в статье описывающей восстановление, а именно:
$DeletedMailbox = Get-MailboxStatistics –Database <Your_MailboxDB> | where {$_.DisconnectDate -ne $null} | Select DisplayName, MailboxGuid, Database
Если нужно избавиться ещё и от архивных почтовых ящиков сервера Exchange 2007/2010, то добавим условие:
-and ($_.IsArchiveMailbox -eq $true)
Естественно, что перед удалением ящиков, очень желательно проверить что конкретно мы удаляем. Для этого полученный массив можно вывести в форме красивого HTML-отчета, о том, как это делается я уже писал ранее здесь.
Далее применяем командлет Remove-Mailbox к элементам массива DeletedMailbox:
$DeletedMailbox | ForEach { Remove-Mailbox -Database $_.Database -StoreMailboxIdentity $_.MailboxGuid -confirm:$false }
Рис.1: Очистка базы данных от удаленных почтовых ящиков.
На рис.1 первой командой мы получаем массив из отключенных почтовых ящиков, затем просто выводим этот массив на экран, и следующей командой выполняем непосредственно само удаление. Для проверки результатов мы снова получаем массив из отключенных ящиков первой командой, и снова выводим массив на экран, как вы видите, в последнем случае массив оказывается пустым.
Сервер Exchange 2010 SP1
Теперь несколько слов о сервер Exchange 2010 SP1, собственно именно он является виновником написания этой статьи, т.к. я хотел показать новый командлет, который появился с выходом первого сервис пака. Командлет зовут Remove-StoreMailbox и подробнее узнать о нем можно как всегда на страницах TechNet`a. Командлет специально «заточен» под очистку базы данных от отключенных либо удаленных почтовых ящиков. Если вы попытаетесь применить его к действующему почтовому ящику, то получите ошибку.
Как известно, ящик можно отключить (Disable-Mailbox) либо удалить (Remove-Mailbox). После чего, его состояние можно проверить командлетом Get-MailboxStatistics, у которого в свойстве DisconnectReason будет значиться Disabled либо SoftDeleted соответственно.
Примечание: Свойство DisconnectReason появилось у почтового ящика только после установки Exchange 2010 SP1
Командлет Remove-StoreMailbox может обрабатывать отдельно отключенные и отдельно удаленные ящики, такое поведение задается параметром MailboxState, который может принимать значения Disabled или SoftDeleted.
Для обработки всех почтовых ящиков в базе данных можно воспользоваться той же командой, что и в первой части статьи, только необходимо изменить условие на следующее:
{$_.DisconnectReason -eq "SoftDeleted"}
либо соответственно
{$_.DisconnectReason -eq "Disabled"}
В результате команда будет иметь вид:
$DeletedMailbox = Get-MailboxStatistics –Database <Your_MailboxDB> | where {$_.DisconnectReason -eq "Disabled"} | Select DisplayName, MailboxGuid, Database
$DeletedMailbox | ForEach { Remove-StoreMailbox -Database $_.Database -Identity $_.MailboxGuid –MailboxState Disabled }
Рис.2: очистка базы данных от удаленных почтовых ящиков на сервере Exchange 2010 SP1.
На рис.2, аналогично первому – сначала получаем массив удаленных ящиков (Disabled), далее выводим этот массив на экран, очищаем базу, снова получаем массив удаленных ящиков и убеждаемся, что команда отработала правильно.
Заключение
Как мы видим, SP1 для Exchange 2010 затронул очень много компонентов сервера и даже такая процедура, как очистка базы данных не осталась без внимания.
Алексей Богомолов (Alexx)
http://alexxhost.ru
На статью не тянет 🙂 больше похоже на заметку, конечно, расписывать отдельный команд-лет некий труд, но я думаю нужно агрегировать сразу несколько параметров, и писать хорошую объемную статью, которую можно прочитать и сделать соответствующие выводы.
Ну не знаю, а я люблю заметки формата “tips and tricks”. Денис, когда ты чегонить напишешь?
Заметки хорошо, но мало 🙂
Сатью собираюсь написать в ближайшее время, уже даже пару тройку тем выбрал. 🙂 Осталось выделить время на реализацию.
Хорошо когда есть разные статьи. Сам же знаешь, фундаментальные труды over 20000 знаков, многими просто не осиливаются.
Спасибо, отличная статья.