Материал: Книга Active directory

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Занятие 2

Создание пользователей с помощью Windows PowerShell и VBScript

•) Q3

Псевдонимы

Использование псевдонима — это альтернативный способ ссылки на командлет. Например, ранее описанный командлет Where-Object имеет псевдоним Where, при использовании которого предыдущий код можно сократить так:

g e t - s e r v i ce | where { $ _ . s t a t u s , - e q "Running" }

Многие командлеты Windows PowerShell уже имеют псевдонимы. Например, для отображения содержимого папки на диске используется командлет Get-Childltem. Этот командлет имеет псевдоним Dir, аналогичный команде в оболочке Windows (Cmd.exe), а также псевдоним Ls, предназначенный для пользователей оболочки UNIX.

Как определить командлет, который «прячется» за псевдонимом? Для этого в командную строку введите alias:

a l i a s d i r

В выходных данных будет указано, что Dir — это псевдоним командлета

Get-Childltem.

Хотя в Windows PowerShell обеспечены псевдонимы для команд оболочки, командлеты W i n d o w s PowerShell используют другие параметры, отличные от команд оболочки Cmd.exe. Например, д л я извлечения каталога папок и всех подпапок в командную строку вводится команда dir/s, а в Windows PowerShell нужно ввести команду dir -recurse.

Пространства имен, поставщики и PSDrive

Командлеты оперируют с объектами в пространстве имен. Папка на диске является примером именного пространства — иерархии, в которой можно осуществлять навигацию. Пространства имен создаются поставщиками. Оболочка Windows PowerShell может получать прямой доступ и манипулировать объектами в пространствах имен этих провайдеров.

Вы н а в е р н я к а з н а к о м ы с концепцией пространства имен тома на диске с буквой или пространства имен общей сетевой папки в виде подключенного сетевого диска. В W i n d o w s PowerShell пространства имен любого провайдера могут быть представлены как PSDrive. Оболочка Windows PowerShell автоматически создает пространство имен PSDrive для каждой буквы диска, уже определенной в Windows.

Оболочка Windows PowerShell выводит эту концепцию на следующий уровень, создавая дополнительные пространства имен PSDrive для распространенных ресурсов. Например, она создает два диска, HKCU и HKLM, для ульев реестра H K E Y _ C U R R E N T _ U S E R и HKEY _ LOCAL _ MACHINE . После этого в реестре можно осуществлять навигацию и манипуляции, как в файловой системе. В командную строку Windows PowerShell введите следующую команду:

cd hklm:\software d i r

Ди с к и также создаются д л я псевдонимов, среды, сертификатов, функций

ипеременных. Д л я перечисления созданных пространств имен PSDrive введите команду get-psdrive.

-) 104

Пользователи

Глава з

Создание пользователя с помощью Windows PowerShell

Далее мы применим Windows PowerShell для создания пользователя в Active Directory. Основной сценарий Windows PowerShell для создания пользователя

выглядит примерно так:

$obj 0U=[ADSI]"LDAP: //0U=Peop1 е, DC=contoso, DC=com" $objUser=$objOU.Create("user","CN=Mary North") SobjUser.Put("sAMAccountName", "тагу.north") SobjUser.SetlnfoO

Э Т О Т К О Д демонстрирует четыре основных шага по созданию объекта в Active Directory с помощью Windows PowerShell.

1.Подключение к контейнеру (например, подразделению), в котором будет создан объект.

2.Применение метода Create контейнера вместе с указанным классом и относительным отличительным именем RDN (Relative Distinguished Name) нового объекта.

3.Заполнение атрибутов объекта с помощью метода Put.

4.Подтверждение изменений в Active Directory с помощью метода Setlnfo объекта.

В следующих разделах эти четыре шага описаны более детально.

Подключение к контейнеру Active Directory

Чтобы создать такой объект, как пользователь, нужно запросить создание объекта у контейнера объекта. Таким образом, процесс начинается с в ы п о л н е н и я действия (метода) с контейнером. Первый шаг состоит в подключении к этому контейнеру. Для работы с объектами Active Directory оболочка Windows PowerShell использует библиотеку адаптеров Active Directory Services Interface (ADSI). Адаптер — это преобразователь между сложной и иногда причудливой природой .NET Framework и упрощенной и согласованной структурой Windows PowerShell. Для подключения к объекту Active Directory выполняется строка запроса LDAP, представляющая собой просто моникер протокола L D A P : / / с именем DN объекта. Первая строка кода выглядит следующим образом: $obj 0U=[ADSI]"LDAP://0U=Peop1е, DC=contoso, DC=com"

Оболочка Windows PowerShell использует адаптер типов ADSI д л я создания объектной ссылки на подразделение People и присваивает ее переменной. Имя переменной objOU соответствует стандартам программирования, согласно которым для идентификации типа переменной используется п р е ф и к с из трех букв, а имена переменных могут быть любой длины и начинаться со знака доллара.

Применение метода Create

На этом этапе переменная $objOU является ссылкой на подразделение People. Вы можете запросить создание объекта с помощью метода контейнера Create. Метод Create требует два параметра, передаваемых в качестве аргументов: класс и RDN-имя объекта, которое является частью имени объекта в родительском

Занятие 2

Создание пользователей с помощью Windows PowerShell и VBScript •) Q3

контейнере. Большинство классов объектов используют в качестве своих RDNимен формат СЫ=имя_обьекта. И м я R D N подразделения ( O U ) указывается р формате 0\5=имя_подразделения, а имя R D N домена — в формате DC=zшя_ домена. Затем следующая строка создает объект пользователях RDN-именем, указанным в формате CN^Mary North:

SobjUser=$objOU.Create("user","CN=Mary North")

Полученный объект присваивается переменной SobjUser, которая представит объект и позволит манипулировать с ним.

Заполнение атрибутов пользователя

Важно помнить, что новый объект и изменения не будут сохранены, пока вы не подтвердите их, а д л я подтверждения изменений требуется заполнить все необходимые атрибуты . Необходимым атрибутом объектов пользователей я в л я е т с я и м я входа п р е д - W i n d o w s 2000. И м я L D A P этого атрибута — sAMAccountName, поэтому приведенная ниже строка кода присваивает объекту атрибут sAMAccountName с помощью метода Put. Стандартный метод Put используется д л я записи свойства объекта. Д л я извлечения свойства применяется стандартный метод Get. Далее показана строка кода:

SobjUser.Put("sAMAccountName", "тагу, north")

Подтверждение изменения с помощью метода Setlnfo

Д л я п о д т в е р ж д е н и я и з м е н е н и й используйте метод Setlnfo объектов Active Directory, как показано в коде:

SobjUser. S e t l n f o O

Заполнение дополнительных атрибутов пользователя

Предыдущие команды создают пользователя лишь с конфигурацией обязательного атрибута sAMAccountName. При создании объекта пользователя нужно заполнить и другие атрибуты. Запись свойства объекта пользователя выполняется с помощью метода Put. Вам нужно многократно использовать один метод, указав к а ж д ы й атрибут, который требуется добавить. Рассмотрим следующий код:

SobjUser.put("sAMAccountName",SsamAccountName) SobjUser. put("userPrincipalName",SuserPrincipalName) SobjUser.put("displayName", SdisplayName)

SobjUser.put("givenName",SgivenName) SobjUser. putC'sn", Ssn)

SobjUser . put("description",Sdescription) SobjUser.put("company", Scompany)

Sobj User.put("department", Sdepartment) S o b j U s e r . p u t ( " t i t l e " , S t i t l e )

SobjUser.put("mail", Smail) SobjUser. S e t l n f o O

Каждая из этих .команд заполняет атрибут пользователя значением, которое хранится в переменной. Не забывайте использовать метод SetlnfoQ объекта пользователя для подтверждения внесенных изменений в Active Directory. Пока не будет применен метод SetlnfoQ, внесенные изменения будут выполняться

5 Зак. 3 3 9 9

-) 106

Пользователи

Глава з

только в локальной копии объекта. Метод SetlnfoQ оценивает свойства объекта для подтверждения. Если атрибуту присвоено недействительное значение, вы получите ошибку в строке SetlnfoQ. С помощью метода GetlnfoQ объекта пользователя можно перезагрузить исходный объект, отменив таким образом все изменения.

Чтобы узнать имя атрибута LDAP, в оснастке Active Directory — пользователи и компьютеры (Active Directory Users and Computers) откройте вкладку Редактор атрибутов (Attribute Editor) диалогового окна свойств учетной записи пользователя. Эта вкладка отображается при установке флажка Дополнитель - ные компоненты (Advanced Features) в меню Вид (View). Редактор атрибутов выводит все атрибуты объекта, включая их LDAP-имена и значения. Чтобы отобразить свойства, заполненные для объекта пользователя, м о ж н о также использовать любую из следующих команд:

SobjUser. psbase.properties SobjUser | get-member

ПРИМЕЧАНИЕ

Многозначные атрибуты

Хотя большинство атрибутов пользователя являются однозначными, некоторые из них многозначные. Если атрибут принимает множество значений, используйте метод PutExQ объекта пользователя. В Интернете выполните поиск ключевых слов PowerShell user array PutEx, чтобы получить адреса ресурсов многочисленных сообществ, где описывается работа с многозначными атрибутами.

А как насчет пароля пользователя? Команда Put не применяется для назначения пароля пользователя. Вместо нее используется метод SetPassword, как показано ниже:

$obj User.SetPasswo rd ("COmp! exP@sswO rd")

К сожалению, метод SetPassword можно использовать только после создания пользователя и активизации метода SetlnfoQ. Это означает, что учетная запись создается до назначения пароля. Здесь дело не в о ш и б к е или ограничении Windows PowerShell, а в сути протоколов Kerberos и LDAP. Тем не менее данная методика вполне безопасна, поскольку учетная запись создается в отключенном состоянии.

После этого нужно включить учетную запись. Флагом состояния учетной записи также нельзя манипулировать с помощью команды Put. Вместо нее используется следующая команда:

SobjUser. psbase. InvokeSet("AccountDisabled",Sfalse) SobjUser. SetlnfoO

Импорт пользователей из базы данных с помощью Windows PowerShell

Хотя на сертификационном экзамене от вас не потребуется применение методов импорта из базы данных с помощью Windows PowerShell, знание этих концепций обеспечит значительные преимущества в автоматизации процесса создания пользователей. Импорт выполняется с помощью нескольких строк дополнительного кода с мощными командлетами Windows PowerShell.

Занятие 2 Создание пользователей с помощью Windows PowerShell и VBScript •) Q3

Предположим, что вы получили из отдела кадров таблицу Excel с данными 0 новых сотрудниках. Программа Excel может сохранить эти данные в виде текстового файла с разделительными запятыми (.csv), который затем можно импортировать с п о м о щ ь ю W i n d o w s PowerShell. Первая строка файла .csv должна содержать имена полей; после нее следуют данные о каждом пользователе. В качестве простого примера рассмотрим файл .csv, сохраненный под именем Newusers.csv:

cn,sAMAccountName, Fi rstName,LastName John Woods, john.woods, Johnathan,Woods Kim Akers,kim.akers,Kimberly,Akers

Обратите внимание на то, что имена полей необязательно соответствуют LDAP - именам атрибутов. Эти имена будут сопоставлены именам атрибутов с помощью сценария.

Оболочка Windows PowerShell может импортировать этот источник данных с помощью одной команды:

$dataSource=import-csv "newusers.csv"

После импорта источника данных в нем нужно пройти циклом по каждой записи. Эта операция выполняется блоком foreach, использующим формат

foreach($dataRecord in

$datasource)

 

 

(

 

 

 

tt выполнение действий

 

 

 

1

'

''

Командлет ForEach проходит циклом по каждому объекту или записи в ис-

точнике данных, п р и с в а и в а я т е к у щ и й объект

переменной SdataRecord, так

что текущую запись представляет переменная

SdataRecord. Теперь вы можете

просмотреть реальные поля в каждой записи, которые становятся свойствами переменной SdataRecord. Например, рассмотрим имя первого пользователя:

SdataRecord.FirstName

Его можно присвоить переменной:

SgivenName = SdataRecord.FirstName

Опять-таки, переменная и л и имя поля необязательно должны соответствовать LDAP - имени атрибута. Сопоставление выполняется при записи переменной со значением в сам атрибут:

$obj User.Put("givenName", SgivenName)

LDAP - атрибут givenName заключен в кавычки. Корректно использовать имя требуется только при ссылке на реальный атрибут объекта. Тем не менее код проще понять, если имена полей источника данных и переменных соответствуют именам атрибутов.

Сложив все фрагменты кода вместе, получим сценарий импорта пользователя (сценарий Userimport . psl):

$objOU=[ADSI]"LDAP://OU=People,DC=contoso,DC=com" SdataSource=import-csv "NewUsers.csv"

foreach($dataRecord in $datasource) { ttmap variables to data source

Источник: https://studfile.net/preview/16435895/