Эта запись опубликована
08.11.2009 в 4:19. Рубрики: Exchange, управление пользователя. Вы можете следить
за ответами к этой записи через RSS 2.0.
Вы можете оставить отзыв или трекбек со своего сайта.
Проблема старых учетных записей, часть вторая
Итак, на предыдущем несложном этапе мы определили давно неиспользуемые учетные записи и переместили их в отдельный контейнер.
Теперь нам необходимо решить вторую часть задачи, связанную с отображением уволенных пользователей в общей адресной книге почтовой системы и, собственно, наличием актуальности в самом существовании их ящиков внутри почтового хранилища.
Для начала, получим список всех существующих почтовых ящиков для перемещенных пользователей. Для этого запустим Exchange Management Shell (PowerShell) и выполним простенькую команду:
get-mailbox -organizationalUnit «libertine.su/Disabled Users»
По сути, нам это не дало ничего нового. Кроме того, что всего лишь перенаправив вывод данной команды на вход следующей, мы можем моментально решить вопрос с адресной книгой.
get-mailbox -organizationalUnit «libertine.su/Disabled Users» | set-Mailbox HiddenFromAddressListsEnabled:$true
Все, мы только что отключили отображение в адресной книге имен всех пользователей, перемещенных в OU Disabled Users.
Теперь осталось понять, можем ли мы как-то сократить количество ящиков, занимающих место в почтовом хранилище.
Но для начала, выведем список всех учетных записей, имеющих доступ к ящикам в заданном контейнере:
get-mailbox -organizationalUnit «libertine.su/Disabled Users» | Get-MailboxPermission | Format-List
Предупреждаю, на выходе будет очень длинная простыня 😉 Поэтому, вывод целесообразно было бы перенаправить в тестовый файл и далее работать уже с ним.
Поскольку нам нет резона тратить массу времени на тщательную вычитку доступов для каждого ящика, целесообразно выбрать любой и на его основе написать фильтр, существенно облегчающий дальнейшие задачи. Нам необходимо для каждого ящика получить список доступа, исключая доступ администраторов, серверов и самого титульного пользователя. Конечный сценарий может выглядеть примерно следующим образом:
get-mailbox -organizationalUnit «libertine.su/Disabled Users» | Get-MailboxPermission | Where {($_.user -notlike «LIBERTINE\admin») -and ($_.user -notlike «LIBERTINE\Exchange View-Only Administrators») -and ($_.user -notlike «LIBERTINE\Exchange Organization Administrators») -and ($_.user -notlike «LIBERTINE\Exchange Servers») -and ($_.user -notlike «LIBERTINE\Exchange Domain Servers») -and ($_.user -notlike «LIBERTINE\Exchange Services») -and ($_.user -notlike «LIBERTINE\Exchange Public Folder Administrators») -and ($_.user -notlike «NT AUTHORITY\NETWORK SERVICE») -and ($_.user -notlike «LIBERTINE\Exchange Organization Administrators») -and ($_.user -notlike «LIBERTINE\Domain Admins») -and ($_.user -notlike «LIBERTINE\Enterprise Admins») -and ($_.user -notlike «LIBERTINE\SECLMAIL$») -and ($_.user -notlike «LIBERTINE\FRSTCLMAIL$») -and ($_.user -notlike «NT AUTHORITY\SELF») -and ($_.user -notlike «LIBERTINE\superoot»)} | Format-List Identity, user
Замечательно, факт наличия доступа мы определили. Но пользуются ли им? Для этого введем дополнительное условие отбора: определим ящики, в которые не смотрели последние 70 дней (но смотрели когда-либо вообще).
get-mailbox -organizationalUnit «libertine.su/Disabled Users» | Get-MailboxStatistics | Where {($_.LastLogonTime -lt (get-date).adddays(-70)) -and ($_.LastLogonTime -gt (get-date).adddays(-900))}| Get-MailboxPermission | …
Впринципе, для завершения расследования происходящего, осталось лишь определить ящики, с которых стоит пересылка корреспонденции. Разумеется, с выводом ящика и адрес для пересылки.
get-mailbox -organizationalUnit «libertine.su/Disabled Users» | Where {$_.ForwardingAddress -ne $null} | Format-List DisplayName,ForwardingAddress
Комбинируя вышеперечисленные команды, можно, например, легко вывести прямых кандидатов на превращение старого почтового ящика в дополнительный smtp адрес для ящика ныне работающего сотрудника. Кстати, в этом примере рекомендую обратить внимание на двойное использование команды get-mailbox:
get-mailbox -organizationalUnit «libertine.su/Disabled Users» | Where {$_.ForwardingAddress -ne $null} | Get-MailboxStatistics | Where {($_.LastLogonTime -lt (get-date).adddays(-70)) -and ($_.LastLogonTime -gt (get-date).adddays(-900))} | get-mailbox | Format-List DisplayName,ForwardingAddress
Да, и еще: старые ящики, даже если ими периодически пользуются, рекомендуется перенести в отдельную почтовую базу, т.к. это даст определенный выигрыш в скорости доступа для активных пользователей. После создания самой новой базы почтовых ящиков, остальное сделать несложно:
get-mailbox -organizationalUnit «libertine.su/Disabled Users» | Move-Mailbox -TargetDatabase «OldMailboxesDB»
Главное, при переносе помнить о том, что в Exchange 2007 процесс совершается от имени администратора путем последовательного копирования всех сообщений. То есть, время последнего доступа к ящику будет установлено в текущее.