Использование модуля windows powershell 2.0 для автоматизации active directory
Windows Server 2008 R2 и Windows Server 2008 — это самые современные на сегодняшний день операционные системы Windows Server, поддерживающие эффективную работу с приложениями, веб-службами и сетями нового поколения. С помощью этих операционных систем можно разрабатывать и распространять многофункциональные пользовательские интерфейсы и приложения, а также управлять ими, поддерживать безопасные сетевые инфраструктуры и повышать эффективность и прибыльность технологий в организации Windows Server 2008 R2 поставляется с модулем Windows PowerShell 2.0, позволяющим создавать сценарии и автоматизацию для Active Directory.
Для работы новых команд Active Directory для Windows PowerShell потребуется Windows PowerShell v2. Команды распространяются в новом модуле для 2.0, не как PSSnapin. Модули легко распространяются и не требуют установки или регистрации — вы просто копируете файлы модуля в папку оболочки Modules и используете команду Import-Module для импортирования модуля в оболочку.
Windows PowerShell 2.0 предустановлен в Windows 7 и Windows Server 2008 R2; он будет доступен для Windows Server 2008, Windows Vista, Windows XP и Windows Server 2003. Модуль Active Directory поставляется с Windows Server 2008 R2, но для использования этих команд не обязательно иметь контроллер домена (DC) в среде этой ОС. Фактически, команды хорошо работают вместе с Windows Server 2003 DC и Windows Server 2008 (не-R2). Вместе с DC для них необходимо установить бесплатную службу Active Directory Management Gateway Service. Служба шлюза обеспечивает работу с Active Directory, и может быть установлена на Windows Server 2003 R2 SP2 и более позднюю версию, или Windows Server 2008 SP2 и более позднюю версию.
На клиентском компьютере нужна функционирующая система Windows 7 или Windows Server 2008 R2, поскольку в настоящее время невозможно установить модуль на что-то постарше.
Одна из сложнейших частей работы с Active Directory является проверка подлинности: вам может понадобиться управлять не только тем доменом, в который вы вошли, но вы можете не иметь доверия в доменах, которыми хотите управлять. В некоторых случаях у вас могут быть административные права в другом домене, но только через альтернативную учетную запись пользователя. Windows PowerShell 2.0 не предоставляет встроенный механизм для сохранения всех этих полномочий. Поэтому люди, писавшие модуль Active Directory, должны были внести новую идею. Их разработка проста и элегантна: модуль Active Directory включает поставщика Windows PowerShell PSDrive. Это означает, что вы можете "прокладывать путь" к домену Active Directory. Этот путь содержит ваши полномочия и позволяет продлить эти полномочия в течении всей сессии оболочки. Когда модуль загружается в оболочку, он автоматически передает ваше имя учетной записи в домене, используя некоторые полномочия, необходимые для работы Windows PowerShell 2.0 (внимание: будет работать Контроль учетных записей, поэтому убедитесь, что запускаете оболочку "под Администратором", если это необходимо). Что-бы сопоставить новые домены, используйте командлет New-PSDrive, который поддерживает параметры командной строки для указания полномочий.
Чтобы изменить каталоги в подключенном домене, используйте привычную команду Cd: Cd AD:, например, меняет фокус оболочки на отображаемый домен по умолчанию. Изменения в домене важны, поскольку все команды Active Directory по умолчанию будут использовать полномочия какого-либо домена, на котором сфокусирована оболочка на данный момент. Это действительно ловкий трюк, позволяющий запускать команды Active Directory каждый раз, не указывая вручную полномочия. Нужно ли запускать одни и те же команды на другом домене? Только зайдите на этот домен, нажмите пару раз стрелку вверх, что бы обратно вызвать команду Active Directory и нажмите Ввод, для повторного запуска в новом домене.
Необязательно работать таким способом с командами Active Directory, но тем не менее: каждая из них так же поддерживает параметры командной строки необходимые для указания полномочий в зависимости от случая. Таким образом, можно работать каким угодно способом. Такую гибкость очень ценится. Команда продукта могла бы легко выбрать ту или иную технологию. И фактически они включают обе технологии, таким образом, учитывая разнообразие своей аудитории.
Модуль Active Directory дает 82 новые команды в оболочке, начиная от очевидных, таких как New-ADUser до более изотерических, как Install-ADServiceAccount. Все эти командлеты имеют приставку "AD", которая выполняет две важные функции. Первая, помогает различить похожие командлеты, — New-ADUser создает нового пользователя AD. Она не создает нового локального пользователя или нового пользователя SQL Server, или какого-нибудь еще. Во-вторых, приставка помогает легко найти все командлеты: ведите Help *-AD* и вы получите список всех 82 команд.
У каждой команды Active Directory есть параметры командной строки - в некоторых случаях множество параметров. New-ADUser, например, имеет несметное количество параметров и позволяет устанавливать справочные атрибуты, такие как Office, Organization и так далее, без необходимости запоминать внутреннюю схему имен атрибутов. В этих командах есть один изящный момент: они защищают вас от глупостей, которые вы можете совершить. Например, если запустить Get-ADUser, и ждать список всех пользователей в алфавитном порядке. В большом домене это не только займет некоторое время, но и может сильно воздействовать на DC. Чтобы предотвратить это, есть принудительный параметр команды -filter, позволяющий задавать точку отсчета (такую, как организационная единица) или другие критерии. При помощи -filter *фактически можно получить каждого пользователя в алфавитном порядке. Однако команда не будет автоматически получать каждый атрибут этих пользователей — поскольку это, опять же, может немного понизить работоспособность DC. Дополнительные параметры, такие как - ResultPageSize (предлагает указать, сколько результатов будет показано за раз) и -Properties (предлагает указать, какие атрибуты получать), помогают регулировать баланс между выполнением и получением необходимой информации.
Создание и заполнение нового пользователя в Active Directory:
PS AD:\> new-aduser -name DonJ -CannotChangePassword $True - Department IT -DisplayName 'Don Jones' -EmployeeNumber 42 -GivenName Don -Office 'Las Vegas' -Organization 'Concentrated Technology' - PasswordneverExpires $True
После создания нового пользователя, может понадобиться сделать что то еще с пользовательским объектом. Если добавить переключатель -PassThru в команду, только что созданный объект пользователя будет выведен на конвейер, где другой командлет сможет принять его как входной параметр. Это позволит сделать что-то вроде этого:
New-ADUser ... -passThru | Set-ADAccountPassword ... -passThru | Enable-ADAccount
Здесь сокращен синтаксис, понятно что — "..." это место для нормальных параметров. Пример показывает, как -passThru позволяет продолжить вывод объекта пользователя в другой командлет. Эта технология позволяет невероятно эффективно использовать однострочные выражения — команды в одну строчку, а не сценарий — что позволяет работать более эффективно.
Конвейерное связывание параметров в Active Directory. При выполнении Help New-ADUser
-full, выводится помощь для каждого отдельного параметра. Многие из них соответствуют атрибутам Active Directory, таким как City, Office и Department — принимают входной конвейер "ByPropertyName". Это и означает, что вы можете передавать входной конвейер командлета New- ADUser. И если входные параметры содержат свойства, которые соответствуют по имени параметра, то они будут согласованы автоматически. Поэтому, если ввод содержит свойство "City", то оно прикрепится к параметру -City. Если ваш входной конвейер содержит свойство "Department", оно подключится к параметру -Department.
Если файл .CSV содержит такие колонки:
"Name","Department","Organization","City"
Каждая строка файла содержит информацию для этих колонок. Можно легко создать эти структуры в Microsoft Office Excel, Microsoft Office Access, Microsoft SQL Server, или где-нибудь еще, и затем выгрузить свои данные в формат CSV. Если сделаеть это учитывая соответствие имен колонок и имен параметров New-ADUser, то можно создать новых пользователей так:
Import-CSV c:\new-users.csv | New-ADUser
Если файл .CSV содержит все необходимые колонки — -Name (параметр -Name задается принудительно) — то New-ADUser волшебным образом правильно свяжет.CSV колонки с правильными параметрами. Можно импортировать сотни новых пользователей за секунды, вводя не больше 50 символов.
Один из основных принципов Windows PowerShell это то, что программисты должны написать все административные функции для управления Active Directory — в командлетах оболочки. Любой GUI должен быть, по сути, внешним интерфейсом для этих командлетов. Microsoft Exchange Server 2007 предоставляет нам такую систему, и работает великолепно. Вы получите прекрасный графический пользовательский интерфейс и всегда будете иметь возможность перемещения в командную строку, если этот интерфейс не будет удовлетворять вашим нуждам. Таким способом раньше Microsoft перезаписыват пользователей и компьютеры Active Directory. Есть еще одна инновационная технология в Windows Server 2008 R2. Это Центр администрирования Active Directory, еще более новый графический интерфейс для управления Active Directory. Под Центром администрирования находятся командлеты Active Directory. Это означает, что те вещи, которые делаются в графическом интерфейсе, можно сделать и из оболочки.
В итоге, практически после десятилетия, Active Directory действительно преуспел. Теперь в Active Directory есть возможность простого интуитивного управления через графический интерфейс. Или более мощного автоматизированного управления через полнофункциональную командную строку — что, не намного сложнее, чем использование графического интерфейса. В результате домены могут позволить себе повысить управляемость.
ЛИТЕРАТУРА
- Д. Холме, Н. Рест, Д. Рест: Настройка Active Directory. Windows Server 2008. Учебный курс Microsoft: Русская Редакция, 2011г., 959с.
- Р.Маримото, М.Ноэл, О.Драуби, Р.Мистри, К.Амарис, MS Windows Server 2008, И.Вильямс, 2009 ,392 с. 3.М.Таллор:Знакомство с Windows Server 2008, 2008, 400 с.