В последних двух статьях рубрики я рассказывал об инструменте Active Directory (AD) под названием search-adaccount. Эту команду по мере использования вы будете ценить все больше и больше. Требуется найти заблокированные учетные данные пользователей в каком-то подразделении? Пожалуйста. Нужно узнать, кто не регистрировался в системе на протяжении 110 дней? Нет ничего проще. Желаете извлечь все отключенные учетные записи пользователей в данном подразделении и узнать имена их руководителей, чтобы отправить им сообщения по электронной почте? Нет проблем.

Впрочем, одна проблема все-таки есть. Search-adaccount может найти такие учетные записи, однако имена руководителей, должности, их настоящие имена и большая часть свыше 100 атрибутов объекта пользователя AD для этой команды недоступны. Выход из положения есть, но вначале я хочу дать некоторые пояснения.

До настоящего момента мы познакомились с двумя обслуживающими AD командами PowerShell в Windows Server 8 R2: Get-ADUser и search-adaccount. Get-ADUser обладает более широкими возможностями и позволяет составлять запросы к AD с детальным описанием пользователей, информацию о которых требуется извлечь. Правда, у этой команды значительно сложнее синтаксис. Специалисты по AD, несомненно, понимали это и, вероятно, опасались, что сложность Get-ADUser отпугнет потенциальных пользователей средств PowerShell для AD. Поэтому был создан «младший компаньон» Get-ADUser под названием search-adaccount, с менее широкими возможностями, но более простым синтаксисом. Диапазон запросов, составляемых с использованием search-adaccount, невелик, но эти запросы относятся к числу наиболее популярных. Search-adaccount позволяет находить учетные записи с истекшими паролями, заблокированные, отключенные или неактивные учетные записи, учетные записи с истекшим и почти истекшим сроком действия, а также учетные записи с паролями, срок действия которых никогда не кончается. Добавим сюда значительно меньший список параметров search-adaccount и получим куда более простую по сравнению с Get-ADUser команду PowerShell для запросов к AD. Сразу скажу, что не призываю полностью отказаться от Get-ADUser. Это было бы ошибкой, поскольку любому администратору AD данная команда требуется регулярно.

Мы уже знаем, что Get-ADUser возвращает лишь 17 из 110 атрибутов и свойств, привязанных к учетной записи пользователя AD, но это можно исправить, добавив параметр -properties (или -pr) к предложению Get-ADUser:

get-aduser -f "title -like 'teach*'" -properties office, title

Этот запрос, помимо 17 стандартных свойств пользователей, возвращает еще свойства office и title. Вспомним, что можно также вывести список особых свойств, подавая выходной результат Get-ADUser на вход команды get-member (или gm):

get-aduser -f "title -like 'teach*'" -properties office, title | gm

Теперь попробуем подать выходной результат search-adaccount на вход get-member, чтобы выяснить информативные возможности search-adaccount в отношении свойств. Этот запрос должен работать в любой среде AD, поскольку каждая среда AD по умолчанию имеет отключенные учетные записи guest и krbtgt:

search-adaccount-accountdisabled -usersonly|gm

Беглый взгляд на результат выполнения get-member обнаруживает еще более скудную информацию, чем при стандартных настройках Get-ADUser: всего 13 свойств. Как же извлечь должность или подразделение для учетной записи, выданной в ответ на запрос с использованием search-adaccount? Возникает предположение, что у search-adaccount должен существовать параметр, аналогичный -properties у Get-ADUser, однако, к сожалению, это не так. Как же заставить search-adaccount выдать детальную информацию об учетной записи? Прибегнем к помощи Get-ADUser! В частности, вывести все отключенные учетные записи пользователей и узнать их должности и подразделения поможет следующий запрос:

search-adaccount-usersonly -accountdisabled | Get-ADUser -pr title, office

Первая часть запроса возвращает все отключенные учетные записи. Символ «вертикальная линия» (|) означает подачу найденных учетных записей на вход указанной далее команды. Заключительная часть запроса предписывает Get-ADUser извлечь эти учетные записи из AD и при их отображении, помимо основных 17 атрибутов, показать также атрибуты office и title. Это позволяет обойти существующие ограничения, однако необходимо заметить, что в данном случае Get-ADUser выполняет дублирующую операцию, поскольку повторно запрашивает AD об отключенных учетных записях. Однако число таких учетных записей, вероятно, будет мало по сравнению с их общим числом, поэтому такое дублирование не должно создать особых проблем. Существует также возможность отправки электронных сообщений из PowerShell с помощью команды send-mailmessage, но об этом я расскажу в другой раз.

Марк Минаси (www.minasi.com/gethelp) — старший редактор журнала Windows IT Pro, сертифицированный системный инженер по продуктам Microsoft