Плотно поработав с связкой 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
}
}
Запуск функции без любых параметров вернет все отключенные ящики:
Для поиска определенного отключенного ящика введите название функции и далее имя пользователя. Например вот так:
Get-DisconnectedMailbox "Blanca Jacobs"
Параметр имени умеет работать с масками. К примеру 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
Подключение отключенных почтовых ящиков
И наконец вы можете использовать функцию Get-DisconnectedMailbox вместе с встроенным командлетом Connect-Mailbox для подключения отключенного ящика к пользователю.
К примеру, ниже мы подкючаем отключенный ящик к пользователю Bradford Boyer:
Get-DisconnectedMailbox "Bradford Boyer" | %{Connect-Mailbox -Identity $_.StoreMailboxIdentity -Database 'DB1' -User 'contoso\bboyer' -Alias 'bboyer'}
|