«Проявление» удаленных почтовых ящиков


Редко приходится восстанавливать удаленные почтовые ящики, поэтому всё время забываю, как их «проявить» в Exchange Server 2013.

Exchange чрезвычайно экономно работает с почтовыми базами и базой Active Directory. Причем настолько экономно, что порой «забывает» изменять второстепенные атрибуты: например, при удалении почтового ящика признак SoftDeleted можно ждать очень долго, а без него трудоёмко найти фактически уже удаленный почтовый ящик.

В Exchange 2010 «проявить» все удаленные почтовые ящики можно было командой:

Get-MailboxDatabase | Clean-mailboxdatabase

Более экономно для одной почтовой базы:

Get-MailboxDatabase "mbdatabase"| Clean-mailboxdatabase

В версии Exchange 2013 командлета Clean-mailboxdatabase нет!

Тем не менее «проявление» удаленных почтовых ящиков можно сделать так:

Get-MailboxDatabase | foreach{Get-MailboxStatistics -Database $_.identity} | ForEach { Update-StoreMailboxState -Database $_.Database -Identity $_.MailboxGuid -Confirm:$false }

(Также можно указать конкретную почтовую базу Get-MailboxDatabase «mbdatabase»| …)

Как видите, стремление к экономии породило новый командлет Update-StoreMailboxState, который в отличие от Clean-mailboxdatabase работает только для одного почтового ящика: поэтому приходится перетряхивать всё содержимое почтовой базы командлетом Get-MailboxStatistics.

Только после этого можно получить список удаленных (отсоединенных) почтовых ящиков:

Get-MailboxDatabase | Get-MailboxStatistics | Where {($_.DisconnectDate -ne $null)}

Полезные ссылки:

  1. Connect-Mailbox
  2. Update-StoreMailboxState
  3. Connect a disabled mailbox
Реклама

комментария 2

  1. Get-MailboxDatabase | foreach{Get-MailboxStatistics -Database $_.identity} | ForEach { Update-StoreMailboxState -Database $_.Database -Identity $_.MailboxGuid -Confirm:$false }

    По моему конструкцию можно написать без заморочек.

    Get-MailboxDatabase | Get-MailboxStatistics | Update-StoreMailboxState -confirm:$false

    Не знаю точно, но если у командлета «Update-StoreMailboxState» параметры database и identity принимают данные из конвейера, то конструкцию можно сократить до указанной выше.

    Так же конструкцию:
    Get-MailboxDatabase | Get-MailboxStatistics | Where {($_.DisconnectDate -ne $null)}
    Можно написать:
    Get-MailboxDatabase | Get-MailboxStatistics | ?($_.DisconnectDate}

    Но возможно вы писали для новичков в Powershell.

    • Конструкция Get-MailboxDatabase | Get-MailboxStatistics работает в последних версиях, но не работала в более ранних CU.
      Согласно описанию help Update-StoreMailboxState -full этот командлет не принимает параметры из конвейера.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

%d такие блоггеры, как: