Мы с ребятами занялись вопросом автоматизации этого процесса. Теоретическое изучение темы показало, что достичь цели можно несколькими способами:
- Сценарием на языке Visual Basic Scripting Edition, который на сервере Active Directory интерпретируется компонентом Windows Script Host.
- Windows PowerShell
- Программы сторонних производителей, предназначенные для администрирования AD
Так как Microsoft рекомендует для администрирования инструмент Windows PowerShell, реализовывать задуманное на практике мы решили именно этим способом.
В результате нескольких часов проб и ошибок у нас получился скрипт, который способен автоматически создать пользователей в Активном Каталоге, извлекая исходные данные из текстового файла.
Итак, практическая реализация автоматического создания пользователей в Активном Каталоге ( Active Directory) при помощи Windows PowerShell:
В первую очередь создаём текстовый файл с данными пользователей и необходимыми параметрами. Первая строчка файла должна содержать названия параметров, остальные строчки – значения этих параметров, разделённые запятыми.
Все возможные параметры можно посмотреть на вкладке «Редактор атрибутов» в свойствах пользователя AD. Включается видимость вкладки «Редактор атрибутов» в главном меню панели администрирования «Компьютеры и пользователи»: в пункте меню «Вид» нужно установить флажок «Дополнительные параметры».
Естественно, в создаваемом текстовом файле не обязательно указывать все параметры пользователя. Мы в нашем текстовом файле указали только самые необходимые: Имя, Фамилия, Логин, Пароль. В итоге получился файл такого вида:
Name,Surname,Login,Password
Федор,Иванов,f.ivanov,QWERty
Вячеслав,Ломаков,v.lomakov,DERWry
Файл сохранили в формате csv, как рекомендуют многие гуру в своих блогах. Кстати, файл csv удобно создавать из MS Office Excel, это один из встроенных форматов, в котором можно сохранить документ Excel. Однако, забегая вперед, скажу, что с csv у нас возникли проблемы – имена пользователей, написанные кириллицей, занеслись в профили пользователей AD в неправильном виде. Проблема с кодировкой. Пришлось сохранять csv в формате txt, и вот тогда всё прошло гладко.
Созданный текстовый файл мы поместили в сетевую общую папку и приступили к созданию скрипта.
В первой строчке импортируем модули PowerShell для AD:
- Import-Module ActiveDirectory
Затем импортируем пользователей из нашего текстового файла:
- $Users = Import-CSV $1 –Delimiter “;”
Параметр $1 означает, что в качестве пути к CSV-файлу будет использоваться первый по счету параметр командной строки. Запускаться скрипт будет следующим образом:
- PS C:\Users\admin > Add_Users.ps1 c:\temp\users.csv
Users.csv – это наш созданный текстовый файл. Далее нам нужно пройтись по всему массиву пользователей из списка:
- Foreach($CurrentUser in $Users) {
Знак открытой фигурной скобки означает начало цикла. Этот цикл проходит по всем объектам списка, и прискаивает текущий объект переменной $CurrentUser.
Затем, для упрощения – присвоим значения соответствующих полей отдельным переменным:
- $Name = $CurrentUser.Name
- $Surname = $CurrentUser.Surname
- $Login = $ CurrentUser.Login
- $Password = $CurrentUser.Password
Для того, чтобы задать пароль пользователю – необходимо перевести его в шифрованный формат SecureString:
- $SecurePwd = ConvertTo-SecureString -AsPlainText -Force -String $Password
Теперь сформируем дисплейное имя пользователя, его логин, User Principal Name.
- $Displayname = $Name + “ “ + $Surname #Дисплейное имя: Ivan Ivanov
- $UserPrincipalName = $Login + “@nizhnepopov.ru”
Наконец, можно перейти к самой главной процедуре: созданию учетной записи пользователя.
- New-ADUser $Displayname –SamAccountName $Login –UserPrincipalName $UserPrincipalName -DisplayName $DisplayName -AccountPassword $SecurePwd -ChangePasswordAtLogon 1 -Path $Path
Здесь, в принципе, все параметры понятны. Параметр -ChangePasswordAtLogon 1 означает, что пользователю будет предложено сменить пароль сразу после логина.
По умолчанию в PowerShell, в отличие от стандартного визарда в оснастке ActiveDirectory Users And Computers учетные записи только что созданных пользователей будут отключены (Disabled). Поэтому сразу после создания учетные записи нужно включить:
- Enable-ADAccount $Login
Теперь нужно закрыть цикл знаком «}». Cкрипт готов!
Целиком скрипт выглядит так:
- Import-Module ActiveDirectory
- $Users = Import-CSV "C:\Users\Documents\Ученики.txt" –Delimiter “;”
- Foreach($CurrentUser in $Users) {
- $Name = $CurrentUser.Name
- $Surname = $CurrentUser.Surname
- $Password = $CurrentUser.Password
- $Login = $CurrentUser.Login
- $SecurePwd = ConvertTo-SecureString -AsPlainText -Force -String $Password
- $UserPrincipalName = $Login + “@nizhnepopov.local”
- $Displayname = $Name + “ “ + $Surname #в кавычках — пробел!
- New-ADUser $Displayname –SamAccountName $Login –UserPrincipalName $UserPrincipalName -OtherName $Name -DisplayName $DisplayName -GivenName $Name -Surname $Surname -AccountPassword $SecurePwd -Path "OU=Ученики, OU=Школа, DC=nizhnepopov, DC=local"
- Enable-ADAccount $Login
- }
Комментарии
RSS лента комментариев этой записи