Меню Закрыть

Вкусности PowerShell при работе с Exchange 2007 и AD

PowerShell позволяет значительно автоматизировать обслуживание системы Exchange и AD. В данной статье я привел несколько скриптов, здорово пригодившихся мне при выполнении некоторых задач.

Сразу хочу поблагодарить Василия Гусева за его блог, а также всех, кто помог мне разобраться с PowerShell вообще и своими примерами сподвигшими к написанию данных скриптов в частности.


Для удобства работы с AD я использовал командлеты компании Quest Software, они бесплатны для использования и доступны для скачивания здесь –
ActiveRoles Management Shell for Active Directory 32-bit
ActiveRoles Management Shell for Active Directory 64-bit
После установки рекомендую выполнить в Exchange Management Shell команду, позволяющую прикрепить оснастку Quest Software к профилю EMS:

 

Exchange 2007

Первый, и в то же время самый полезный для меня скрипт выполняет экспорт почтовых ящиков отключенных пользователей с дальнейшим отключением почтового ящика и очисткой базы. Рассмотрим более подробно:

Обращаю ваше внимание, что запуск данного скрипта возможен только с удаленной рабочей станции под управление 32-bit ОС и с установленной консолью Exchange Management Shell. Дополнительно используется параметр –Confirm:$false выключающий запрос подтверждения при экспорте и отключении почтового ящика, если вы хотите контролировать весь процесс, удалите этот параметр.

Получение списка 20 самых больших почтовых ящиков:

Можно убрать последнюю часть конвейера (| select -First 20) и получить размер всех почтовых ящиков на сервере. Размер выводится в байтах, что не очень удобно для восприятия, но я, к сожалению, не смог найти решения для трансформации размера в Мб или Гб. Буду признателен, если кто подскажет.

Далее, зачастую возникают ситуации, когда необходимо удалить из почтовых ящиков пользователей ошибочно посланное письмо или просочившийся спам с вирусом. Сделать это достаточно просто:

Для получения списка баз почтового сервера, пишем просто:

если же вы хотите получить количество почтовых ящиков, имеющихся в каждой из баз, используйте следующий скрипт:

Active Directory

Часто бывает, что когда начинаешь заниматься обслуживанием AD, обнаруживается большое количество устаревших учетных записей компьютеров и пользователей. Приведенные ниже скрипты позволят выявить такие учетки.

Находим и удаляем учетные записи компьютеров, не обращавшихся к AD последние 4 месяца

Находим учетные записи пользователей, имя которых начинается с любой буквы русского алфавита и которые не заходили в домен более полгода:

При первом запуске скриптов будет не лишним использовать параметр -whatif в конце конвейра, это позволит протестировать выполнение задачи без применения изменений.

Все приведенные в статье скрипты здорово помогли мне при обслуживании AD и Exchange, надеюсь пригодятся и вам 🙂

8 Comments

  1. Sergey

    Я бы не назвал приведенные вами примеры скриптами. Чисто технически они ими безусловно являются, но на практике это 3-4 строчки кода. А в скрипты обычно выделяют большие и/или сложные блоки кода.

    А по поводу вот этого:

    “Размер выводится в байтах, что не очень удобно для восприятия, но я, к сожалению, не смог найти решения для трансформации размера в Мб или Гб.”

    Так нет ничего проще, скорее всего я ошибусь в синтаксисе, потому что не помню точно, просто когда-то попробовал, получилось, но больше не делал, но вообще смысл такой: при выводе данных создете ассоциативный массив
    {$_.TotalItemSize, $_.TotalItemSize/Mb}
    ну или /Gb если нужно получить размер в Гигабайтах

    Синтаксис создания такой конструкции уточните в справке.

  2. Sergey

    Немного поколдовал

    Get-MailboxStatistics -Server “serv06″ | select displayname, ItemCount, @{Name=”TotalItemSize”;expression={$_.TotalItemSize/1Mb}} | sort TotalItemSize -desc | select -First 20

    Наслаждайтесь, размер выводится в Мегабайтах, для Гигабайт соответственно делителем подставить /1Gb

  3. kvazar

    По поводу скриптов вы конечно правы, но язык не повернулся назвать их по другому 🙂 Большое спасибо за способ перевода в Гб, буду знать!

  4. itpadla

    Сколько у вас сайтов в AD? Если больше одного и там есть контроллеры, то у вас есть шанс грохнуть живые компьютеры. Прямо сейчас не скажу, но не уверен, что pwdLastSet реплицируемый параметр

  5. kvazar

    Вы ошибаетесь. Данный параметр реплицируется, иначе компьютер смог бы заходить только на один контроллер домена, на котором он сменил пароль. Не реплицируется параметр LastLogon.

  6. Уведомление:Получение информации о времени последней регистрации пользователя в домене | Kvazar`s Blog

  7. sergei

    подскажите, как скорректировать скрипт чтобы удалить из АД информацию lastlogon

  8. Уведомление:Получение информации о времени последней регистрации пользователя в домене ( last logon)

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

один × 5 =