Назад | Перейти на главную страницу

Скрипт для получения списка почтовых ящиков пользователей с отключенной учетной записью Active Directory

У меня есть процесс, с помощью которого мы отключаем учетную запись пользователя Active Directory, когда они закрываются. Почтовый ящик Exchange 2007 остается, а переадресация настроена на диспетчер пользователей. Мне нужно периодически запускать сценарий, который будет извлекать список активных в данный момент почтовых ящиков с отключенной соответствующей учетной записью AD. У меня нет опыта написания каких-либо сценариев, но я считаю, что это можно сделать на основе других вещей, которые я читал. Я немного поискал, но пришел с пустыми руками с этим конкретным требованием. Спасибо.

Сервер 2003R2, Exchange 2007, AD

Чтобы было ясно, я не прошу никого писать это для меня, просто несколько ссылок, которые могут подтолкнуть меня в правильном направлении.

Вы можете использовать стандартные вызовы LDAP через такой язык, как PHP, или использовать специальные вызовы AD из продукта Microsoft (например, C # с библиотекой DirectoryServices). У меня нет Exchange, поэтому я не знаю, какие необработанные атрибуты для почтовых ящиков, но чтобы увидеть, отключена ли учетная запись, вы должны проверить атрибут «userAccountControl» для каждого пользователя, а затем интерпретировать числовые флаги, чтобы увидеть отключена ли учетная запись (список флагов можно увидеть здесь: http://support.microsoft.com/kb/305144 )

Базовый процесс для сценария будет следующим:

  1. Выполните привязку к Active Directory с помощью LDAP (PHP, perl и т. Д.) Или DirectoryService (Visual Basic, C #).

  2. Выполните поиск всех пользовательских объектов (объектов с SamAccountType 30000000 в шестнадцатеричном формате), которые отключены (объекты с шестнадцатеричным значением userAccountControl, содержащим '2' в их целочисленной форме)

  3. Прокрутите полученные объекты и позвоните, чтобы определить, какие из них имеют активные почтовые ящики (опять же, я не использую Exchange, поэтому у меня нет хорошего ответа).

  4. Распечатывайте или записывайте в файл некоторые соответствующие атрибуты каждый раз, когда вы попадаете в # 3 (sAMAccountName, dn и cn были бы хорошими местами для начала) вместе, возможно, с отметкой даты для всего отчета.

Это должно помочь: http://msexchangetips.blogspot.com/2007/06/exchange-find-disabled-accounts-with.html

Я уверен, что есть способ сделать это с помощью PowerShell, но в данный момент у меня нет сервера Exchange под рукой ...

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

LDIFDE -u -f myexport.ldif -r "(& (objectCategory = человек) (userAccountControl = 514))"

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

LDIFDE -u -f myexport.ldif -r "(& (objectCategory = person) (userAccountControl = 514))" -l "dn"

С уважением, Фил.

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

Я решил начать использовать атрибут Скрыть из списков адресов Exchange при увольнении сотрудника.

Итак, используя LDIFDE с комбинацией информации, предоставленной Филом, и ссылкой Массимо, вот что я сделал.

LDIFDE -f c:\disabledusersmailbox.txt -r "(&(UserAccountControl=514)(objectClass=User)(msExchHideFromAddressLists=TRUE))" -l "dn"