Вкусности 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 )

  1. Sergey
    says:

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

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

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

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

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

  2. Sergey
    says:

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

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

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

  3. kvazar
    says:

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

  4. itpadla
    says:

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

  5. kvazar
    says:

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

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

  7. sergei
    says:

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

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

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

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

четырнадцать − 10 =

Яндекс.Метрика