.
По существу, для запуска команд Server 2008 R2 AD достаточно одного компьютера с Windows 7 или сервера Server 2008 R2 (для ввода команд) и одного контроллера домена Server 2008 R2 (для получения и выполнения команд). Здесь оговорка «по существу» сделана для того, чтобы отметить, что на самом деле работу с командами можно настроить и для версии более ранней, чем Server 2008 R2 DC, но это тема отдельного обсуждения.
Чтобы начать поиск объектов пользователей с помощью Get-ADUser, откройте окно PowerShell и импортируйте модуль AD, воспользовавшись командой import-module activedirectory (в укороченном варианте — ipmo ac*). Те, кому приходилось работать с командами PowerShell, которые начинаются с get- (например, get-process, getservice), могут подумать, что для вывода списка всех пользователей достаточно команды get-aduser, однако это не так. Вместо этого в PowerShell вводятся некоторые параметры.
Наиболее широко используется параметр -filter для указания критерия отбора пользователей. Общий вариант команды
get-aduser -filter *
предусматривает вывод всех учетных записей, содержащихся в данной реализации AD. Настоятельно рекомендую использовать такой вариант команды в рабочей сети только в том случае, когда эта сеть совсем небольшая, либо если вас не пугает перегрузка локального DC. Советую проявить большую избирательность, как в приведенном ниже примере поиска пользователей с именем Марк:
get-aduser -f {GivenName -eq 'Mark'}
Если в сети нет ни одного пользователя с таким именем, в ответ на эту команду PowerShell выдаст запрос без пояснительного текста. Однако приведенный выше пример поднимает ряд вопросов, поэтому я дам некоторые пояснения.
Во-первых, отметим, что в команде присутствует запись -f вместо -filter. PowerShell позволяет сокращать имена параметров до тех пор, пока не появится возможность неоднозначного толкования. Единственным параметром, начинающимся с буквы f, является -filter, поэтому его можно сокращать до буквы -f. Однако, если бы эта команда имела, например, параметр -finger, запись -f не имела бы однозначного толкования, и максимально допустимой аббревиатурой была бы -fil.
Во-вторых, почему GivenName? Именование атрибутов пользователей AD осуществляется по стандарту X.500, создатели которого по непонятной причине выбрали более «европейскую» фразу GivenName (вместо FirstName). Те, кто пользовался редактором ADSI Edit, уже сталкивались с этим, однако и они могут не знать, что создатели команд AD пошли еще дальше, предлагая различные варианты записей для некоторых атрибутов. Например, фразой стандарта X.500 для last name является sn — сокращение от surname. Только не спрашивайте, почему создатели X.500 не использовали gn в качестве атрибута для first name! В любом случае вы обнаружите, что команды PowerShell допускают как sn, так и surname в качестве допустимых атрибутов пользователей. Однако полный список атрибутов пользователя по имени Mark легко выводится с помощью следующей команды:
get-aduser -f {name -eq 'Mark'} -properties *| get-member
Сохраните выходной результат выполнения этой команды! Это полезный листинг структуры объектов пользователей AD, который упростит составление запросов в будущем.
В-третьих, вы, вероятно, уже догадались, что -eq — это используемое в PowerShell сокращение для equal to. В запросах не допускается использование знаков равенства, поэтому запись -f {name = ‘Mark’} недопустима. Однако, возможно, вас удивит, что приведенная ниже запись также не сработает (по крайней мере, сработает неожиданным образом):
get-aduser -f {name -eq 'M*'}
PowerShell проводит различие между сравнениями, содержащими подстановочные знаки, и теми, которые таковых не содержат. Для поиска по точному совпадению пользуйтесь -eq. Если запись содержит подстановочный знак, следует применять -like:
get-aduser -f {name -like 'M*'}
В данном примере сравнение с именем Mark производится по заглавной букве, однако отметим, что команды PowerShell AD не зависят от регистра. Специалистам по PowerShell, возможно, известно, что для задания зависящих от регистра сравнений обычно используется оператор -ceq, однако к командам AD это неприменимо, поскольку оператор -ceq не поддерживается.
Запрос по имени — очень простой случай. Более углубленные запросы мы обсудим в следующий раз.
Марк Минаси (www.minasi.com/gethelp) — старший редактор журнала Windows IT Pro, сертифицированный системный инженер по продуктам Microsoft