. В сущности, специалисты Microsoft разработали «ускоритель ввода» для интерфейса ADSI — и это, пожалуй, все. Тем, кому нужно было выполнять более сложные задачи, приходилось применять собственные классы. NET, обеспечивающие поддержку AD, а для этого требовались более серьезные навыки, овладевать которыми были готовы далеко не все администраторы. Многие организации обратились к независимым провайдерам, таким как компания Quest Software; по их мнению, разработанная этой компанией оснастка AD PowerShell удовлетворяла всем требованиям.

Но с выходом систем Windows 7 и Windows Server 2008 R2 период ожидания полнофункционального средства поддержки PowerShell AD завершился. Этот продукт разработчики Microsoft оснастили модулем AD и провайдером дисков PowerShell, так что управление службой AD из среды PowerShell осуществляется теперь быстро и просто.

Как получить эти инструменты?

Если установить контроллер домена (DC) Server 2008 R2 посредством добавления роли Active Directory Domain Services в диспетчере Server Manager, модуль AD PowerShell будет инсталлирован по умолчанию. Но если вы хотите установить этот модуль (а ведь любой модуль есть не более чем коллекция команд PowerShell, провайдеров, сценариев и т. д.) на рабочей станции Windows 7, нужно будет установить средства удаленного администрирования сервера Remote Server Administration Tools (RSAT), которые можно загрузить со страницы Microsoft Remote Server Administration Tools for Windows 7 (www.microsoft.com/downloads/details.aspx?FamilyID=7D2F6AD7-656B-4313?A005-4E344E43997D).

После установки набора средств RSAT откройте оснастку Programs and Features панели управления, выберите пункт Turn Windows features on or off и прокручивайте список до тех пор, пока не дойдете до узла RSAT. Раскройте этот узел, и вы увидите узел Active Directory Module for Windows PowerShell, показанный на экране 1. Установите флажок и нажмите кнопку ОК, в результате чего модуль будет добавлен.

 

Экран 1. Добавление модуля AD PowerShell в Windows 7

После установки модуля можно либо запустить Active Directory Module for Windows PowerShell из меню Start и далее Program, Administrative Tools, либо без труда добавить его к существующему сеансу PowerShell, введя с клавиатуры следующую команду:

Import-module ActiveDirectory

После короткого информационного сообщения на экране вновь появится окно командной строки, и вы сможете воспользоваться всеми средствами, которыми располагают PowerShell и AD. Но, перед тем как мы начнем работать с модулем AD PowerShell, позвольте мне сделать важное сообщение. В отличие от всех ранее выпущенных продуктов, обеспечивающих автоматизацию службы AD с помощью средств PowerShell, этот новый модуль будет функционировать лишь в том случае, если в соответствующем домене будет находиться по крайней мере один DC, на котором выполняются новые веб-службы AD, Active Directory Web Services (ADWS). Эти службы по умолчанию устанавливаются на контроллерах доменов Server 2008 R2, но, чтобы иметь возможность работать с модулем, понадобится установить на контроллерах доменов Windows Server 2003 или Server 2008 специальный дополнительный компонент. Если в вашем домене нет сервера ADWS, при попытке импорта в PowerShell модуля AD система сообщит вам об ошибке. Кстати, если говорить о службах ADWS и вообще о командах PowerShell, любопытно отметить, что в ходе обмена данными с AD они не пользуются протоколом LDAP. При взаимодействии со службой AD они задействуют протоколы на базе веб-служб XML. Этим новые службы существенно отличаются от всех ранее выпускавшихся наборов инструментов для работы с AD; будет интересно проследить, намерена ли Microsoft по-прежнему развивать эту тенденцию в новых версиях средств управления AD. Отметим, что если вы установите службы ADWS на контроллере домена, который функционирует под управлением операционной системы, отличной от Server 2008 R2, то сможете по-прежнему управлять этими серверами с помощью обычных инструментов на базе LDAP, таких как Active Directory Users and Computers.

Работа с составными командами

Итак, вы установили составные команды и запустили контроллер домена со службами ADWS. Теперь вы готовы исследовать весь потенциал продукта PowerShell for AD.

Microsoft поставляет два основных инструмента для автоматизации среды AD с помощью оболочки PowerShell. Первый инструмент — набор команд, позволяющий решать широкий диапазон задач от поиска объектов AD до создания учетных записей компьютеров и модификации учетных записей пользователей. Второй инструмент — провайдер PowerShell drive provider for AD; он позволяет перемещаться по AD как по файловой системе. Этот компонент может быть мощным средством интерактивного воздействия; я покажу вам несколько изящных трюков, которые администратор может проделывать с его помощью в среде AD.

Начнем с некоторых команд AD. Если вы хотите познакомиться со всеми представленными в модуле AD PowerShell командами, имеющими отношение к AD, откройте окно PowerShell и введите следующий код:

get-command -module ActiveDirectory

В результате будет возвращен список из 76 команд, входящих в состав модуля AD. В нем представлены команды с «говорящими» именами, такие как Get-ADGroupMember (для считывания членов групп) и New-ADComputer (для добавления в домен учетных записей компьютеров). Давайте посмотрим, как можно использовать некоторые из этих команд. Допустим, вы хотите быстро считать список членов группы Marketing Users, размещенной в вашем домене. Эта задача с легкостью решается с помощью следующей команды:

get-ADGroupMember -identity "Marketing
   Users"

Параметр identity часто используется в различных частях команды AD для ссылки на тот или иной объект AD. Этот параметр может принимать форму отличительного имени (например, DC=cpandl, DC=com), GUID объекта, SID или samAccountName. Еще одна мощная функция PowerShell, а также рассматриваемых команд AD обеспечивает возможность пересылки выходных данных одной команды другой команде. Предположим, к примеру, что вы хотите найти в каталоге AD некий объект пользователя, а затем отключить его. Вы знаете, что параметру samAccount-Name данного пользователя присвоено значение kmyer, и поэтому решить поставленную задачу можно с помощью двух команд:

get-ADUser -identity kmyer |
   Set-ADUser -enabled $false

В данном примере мы задействуем команду get-ADUser для поиска учетной записи пользователя, чьему параметру samAccountName присвоено значение kmyer. Обнаружив данный объект пользователя, мы направляем его команде Set-ADUser и передаем при этом его параметр «enabled» с флагом PowerShell $false; это означает, что мы хотим отключить данную учетную запись.

Приведенный выше несложный пример иллюстрирует мощь и простоту команд PowerShell и AD. Рассматриваемый модуль содержит целых 76 команд, а значит, с помощью данной функции можно решить гораздо более широкий круг задач. Рассмотрим еще одно достойное внимания средство, реализованное в этом модуле, — Active Directory PowerShell drive provider.

Active Directory PowerShell Drive Provider

Что такое PowerShell drive provider? В PowerShell реализована концепция управления ресурсами, в которой последние рассматриваются, как если бы они были томами диска. Известно, что компакт-диск можно представить как папку с файлами. Подобным же образом диски PowerShell дают нам возможность перемещаться с одного типа ресурсов на другой. Например, в версии PowerShell 1.0 разработчики Microsoft реализовали провайдер хранилища PowerShell для реестра, так что пользователи могут трактовать разделы и значения реестра как папки и файлы. Каталоги PowerShell можно преобразовать в раздел HKEY_LOCAL_MACHINE и далее перемещаться по разделам, добавляя и удаляя разделы и значения с помощью команд, подобных тем, которые используются при работе с файловой системой. Наряду с командами специалисты Microsoft создали компонент PowerShell drive provider for AD. Этот провайдер PowerShell дает возможность работать с иерархической системой AD как с файловой системой. Чтобы воспользоваться этой функцией, запустите PowerShell с загруженным модулем AD. После этого введите с клавиатуры код

cd AD:

Подсказка с меткой диска изменится; теперь в ней будет отображаться имя нового диска, с которого вы работаете. Если в этом окне вы введете команду DIR, то получите список всех разделов внутри текущего леса AD. Допустим, вы хотите перейти в домен AD и создать новую организационную единицу (OU). Из контекста дисков AD: верхнего уровня введите код:

cd "DC=cpandl, DC=com"

Замените DC=cpandl, DC=com вашим именем домена AD.

Допустим, теперь мы хотим создать новую организационную единицу HR внутри контейнера Marketing. Чтобы перейти в папку Marketing, введите код

cd "OU=Marketing"

Наконец, для создания HR в контейнере Marketing введите с клавиатуры

md "OU=HR"

Как видите, все очень просто. На экране 2 показаны результаты работы этих команд.

 

Экран 2. Создание OU с помощью провайдера дисков PowerShell

Разумеется, с помощью диска AD PowerShell можно сделать гораздо больше; рассмотренный пример — всего лишь верхушка айсберга. Используя данный метод, можно решить в AD почти все задачи, которые существуют внутри файловой системы. Кроме того, включая в сценарии команды диска PowerShell, вы можете продолжить процесс автоматизации AD.

Рационализируем процесс управления AD

Я лишь весьма поверхностно затронул вопрос о том, что именно вы можете сделать в AD средствами PowerShell. Наряду с составными командами и провайдером AD в вашем распоряжении оказывается новый набор методов управления ресурсами AD в операционных системах Windows 7 и Server 2008 R2. Я настоятельно рекомендую читателям выделить время для работы с этим новым модулем. Вы получите ценную информацию, которая поможет упростить процесс управления ресурсами AD.

Даррен Мар-Элиа (darren@sdmsoftware.com) — внештатный редактор Windows IT Pro, главный инженер и основатель компании SDM Software. Ведет сайт, посвященный проблемам групповых политик (www.gpoguy.com), и является соавтором книги Microsoft Windows Group Policy Guide