headermask image

Управление отключенными почтовыми ящиками Exchange через PowerShell

Плотно поработав с связкой Exchange 2007/2010 и PowerShell некоторое время я создал несколько функций, облегчающих мне определенные операции. В данной статье я расскажу о некоторых подобных функциях, связанных с управлением отключенными почтовыми ящиками.

Поиск отключенных ящиков

Первая функция называется Get-DisconnectedMailbox и из её названия становиться понятно, что она используется для получения списка отключенных майлбоксов. Данная функция выведет список всех отключенных почтовых ящиков на каждом сервере:

function Get-DisconnectedMailbox {
    [CmdletBinding()]
    param(
        [Parameter(Position=0, Mandatory=$false)]
        [System.String]
        $Name = '*'
    )

    $mailboxes = Get-MailboxServer
    $mailboxes | %{
        $disconn = Get-Mailboxstatistics -Server $_.name | ?{ $_.DisconnectDate -ne $null }
        $disconn | ?{$_.displayname -like $Name} |
            Select DisplayName,
            @{n="StoreMailboxIdentity";e={$_.MailboxGuid}},
            Database
    }
}

Запуск функции без любых параметров вернет все отключенные ящики:

 

disconn_exch_mailbox_1

Для поиска определенного отключенного ящика введите название функции и далее имя пользователя.  Например вот так:

Get-DisconnectedMailbox "Blanca Jacobs"

disconn_exch_mailbox_2

Параметр имени умеет работать с масками. К примеру Get-DisconnectedMailbox M* выведет все отключенные ящики пользователей, имена которых начинаются с буквы "M".

Удаление отключенных почтовых ящиков

Вы можете удалять почтовые ящики с помощью командлета Remove-Mailbox, указав параметры StoreMailboxIdentity и Database. Для упрощения процедуры я написал функцию Remove-DisconnectedMailbox, которая работает в связке с Get-DisconnectedMailbox. Она имеет такой код:

function Remove-DisconnectedMailbox {
    [CmdletBinding(SupportsShouldProcess=$true)]
    param(
        [Parameter(Position=0, ValueFromPipelineByPropertyName=$true, Mandatory=$true)]
        [System.String]
        $StoreMailboxIdentity,
        [Parameter(Position=1, ValueFromPipelineByPropertyName=$true, Mandatory=$true)]
        [System.String]
        $Database
        )

    process {
        Remove-Mailbox @PSBoundParameters
    }
}

Данная функция позволяет вам легко удалить все отключенные ящики перенаправив вывод функции Get-DisconnectedMailbox в функцию Remove-DisconnectedMailbox. Вы можете отключать один ящик за раз следующим образом:

Get-DisconnectedMailbox "Bill Jones" | Remove-DisconnectedMailbox -Confirm:$false

disconn_exch_mailbox_3

 

Подключение отключенных почтовых ящиков

И наконец вы можете использовать функцию Get-DisconnectedMailbox вместе с встроенным командлетом Connect-Mailbox для подключения отключенного ящика к пользователю.

К примеру, ниже мы подкючаем отключенный ящик к пользователю Bradford Boyer:

Get-DisconnectedMailbox "Bradford Boyer" | %{Connect-Mailbox -Identity $_.StoreMailboxIdentity -Database ‘DB1′ -User ‘contoso\bboyer’ -Alias ‘bboyer’}

disconn_exch_mailbox_4

Автор: Mike Pfeiffer

 

 

Полезная информация:

Рекомендую к прочтению отличный сайт, где рассказывается про торговые стратегии Форекс. Ведь не секрет что работа с Форекс требует тщательного анализа своих действий, больших знаний и правильно выбранной стратегии. Без этого вы просто пополните армию неудачников, повествующих о том, какой надурилово этот форекс.

vtoroy
Похожие посты
  • Проблема с отправкой почтовых уведомлений в DPM
  • Управление динамическим пулом MAC-адресов в Hyper-V
  • Exchange Server 2010: Управление архивными ящиками, часть 2
  • Управление локальными групповыми политиками Windows Server 2008 Core Edition
  • Exchange Server 2010: Управление архивными ящиками, часть 1
  • Exchange Server 2010: Управление архивными ящиками, часть 3
  • Как дать пользователю права на управление списком рассылки в Exchange 2007
  • Управление AD LDS на сервере Edge Transport с помощью ADSIEdit
  • Импорт PST файла в почтовый ящик Exchange 2010 SP1
  • Управление групповыми политиками с помощью Advanced Group Policy Management (AGPM) v4, часть 2
  • 3 комментов оставлено (Add 1 more)

    1. У меня проблема в в том, что после отключения ящика, ни одна команда не выводит его теперь. При этом сервер уже перезагружался.

      1. Anatoliy on December 12th, 2011 at 1:52 pm
    2. Сразу видно, что Mike Pfeiffer освоил PowerShell на основе примеров из EMS. Непонятно, зачем нужно было вообще городить эти функции. Научится пользоваться конвейером было бы достаточно.

      Например, всего одной строчки достаточно, чтобы получить все Disconnected-ящики со всех Mailbox-серверов:
      MailboxServer | MailboxStatistics | ? {$_.DisconnectDate} | select DisplayName, DisconnectReason, MailboxGuid, DatabaseName, ServerName

      Получить Disconnected-ящики пользователей, чьё имя начинается с “A”:
      MailboxServer | MailboxStatistics | ? {$_.DisconnectDate -and $_.DisplayName -like ‘A*’} | select DisplayName, DisconnectReason, MailboxGuid, DatabaseName, ServerName

      2. Sergey on October 28th, 2010 at 7:28 pm
    3. Я заметил один нюанс. Условие $_.DisconnectDate -ne $null не выполняется для ящиков, отключенных недавно, поэтому их и не увидеть таким образом. Вместо этого можно использовать другое условие:
      $_.StorageLimitStatus -eq $null

      3. Mykhaylo Khodorev on October 11th, 2010 at 6:29 pm