Когда пользователей мало, делать это можно вручную, но когда число пользователей переваливает за сотню, приходят мысли об автоматизации процесса.
Достичь цели можно несколькими способами:
- Сценарием на языке Visual Basic Scripting Edition, который на сервере Active Directory интерпретируется компонентом Windows Script Host.
- Windows PowerShell
- Программы сторонних производителей, предназначенные для администрирования AD
Так как Microsoft рекомендует для администрирования инструмент Windows PowerShell, реализовывать задуманное будем этим способом. В результате должен получиться скрипт, который способен автоматически создать пользователей в Активном Каталоге, извлекая исходные данные из текстового файла.
В первую очередь создаём текстовый файл с данными пользователей и необходимыми параметрами. Первая строчка файла должна содержать названия параметров, остальные строчки – значения этих параметров, разделённые запятыми.
Все возможные параметры можно посмотреть на вкладке «Редактор атрибутов» в свойствах пользователя AD. Включается видимость вкладки «Редактор атрибутов» в главном меню панели администрирования «Компьютеры и пользователи»: в пункте меню «Вид» нужно установить флажок «Дополнительные параметры».
Естественно, в создаваемом текстовом файле не обязательно указывать все параметры пользователя. Мы в нашем текстовом файле указали только самые необходимые: Имя, Фамилия, Логин, Пароль. В итоге получился файл такого вида:
Name,Surname,Login,Password
Федор,Иванов,f.ivanov,QWERty
Вячеслав,Ломаков,v.lomakov,DERWry
Файл сохраняем в формате csv. Кстати, файл csv удобно создавать из MS Office Excel, это один из встроенных форматов, в котором можно сохранить документ Excel. Если имена пользователей написаны кириллицей, может возникнуть проблема с кодировкой, в результате которой в профилях пользователей 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
- }