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

Достичь цели можно несколькими способами:

  1. Сценарием на языке Visual Basic Scripting Edition, который на сервере Active Directory интерпретируется компонентом Windows Script Host.
  2. Windows PowerShell
  3. Программы сторонних производителей, предназначенные для администрирования 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:

  1. Import-Module ActiveDirectory  

Затем импортируем пользователей из нашего текстового файла:

 
  1. $Users = Import-CSV $1 –Delimiter “;”  

Параметр $1 означает, что в качестве пути к CSV-файлу будет использоваться первый по счету параметр командной строки. Запускаться скрипт будет следующим образом:

  1. PS C:\Users\admin > Add_Users.ps1 c:\temp\users.csv  

Users.csv – это наш созданный текстовый файл. Далее нам нужно пройтись по всему массиву пользователей из списка:

 
  1. Foreach($CurrentUser in $Users) {  

Знак открытой фигурной скобки означает начало цикла. Этот цикл проходит по всем объектам списка, и прискаивает текущий объект переменной $CurrentUser.

Затем, для упрощения – присвоим значения соответствующих полей отдельным переменным:

 
  1. $Name = $CurrentUser.Name  
  2. $Surname = $CurrentUser.Surname  
  3. $Login = $ CurrentUser.Login  
  4. $Password = $CurrentUser.Password  

Для того, чтобы задать пароль пользователю – необходимо перевести его в шифрованный формат SecureString:

 
  1. $SecurePwd = ConvertTo-SecureString -AsPlainText -Force -String $Password  

Теперь сформируем дисплейное имя пользователя, его логин, User Principal Name.

 
  1. $Displayname = $Name + “ “ + $Surname #Дисплейное имя: Ivan Ivanov  
  2. $UserPrincipalName = $Login + “@nizhnepopov.ru”  

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

 
  1. New-ADUser $Displayname –SamAccountName $Login –UserPrincipalName $UserPrincipalName -DisplayName $DisplayName -AccountPassword $SecurePwd -ChangePasswordAtLogon 1 -Path $Path  

Здесь, в принципе, все параметры понятны. Параметр -ChangePasswordAtLogon 1 означает, что пользователю будет предложено сменить пароль сразу после логина.
По умолчанию в PowerShell, в отличие от стандартного создания профилей пользователей в ActiveDirectory Users And Computers, учетные записи только что созданных пользователей будут отключены (Disabled). Поэтому сразу после создания учетные записи нужно включить:

 
  1. Enable-ADAccount $Login  

Теперь нужно закрыть цикл знаком «}». Cкрипт готов.

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

 
  1. Import-Module ActiveDirectory  
  2.   
  3. $Users = Import-CSV "C:\Users\Documents\Ученики.txt" –Delimiter “;”  
  4.   
  5. Foreach($CurrentUser in $Users) {  
  6.   
  7. $Name = $CurrentUser.Name  
  8.   
  9. $Surname = $CurrentUser.Surname  
  10.   
  11. $Password = $CurrentUser.Password  
  12.   
  13. $Login = $CurrentUser.Login  
  14.   
  15. $SecurePwd = ConvertTo-SecureString -AsPlainText -Force -String $Password  
  16.   
  17. $UserPrincipalName = $Login + “@nizhnepopov.local”  
  18.   
  19. $Displayname = $Name + “ “ + $Surname #в кавычках — пробел!  
  20.   
  21. New-ADUser $Displayname –SamAccountName $Login –UserPrincipalName $UserPrincipalName -OtherName $Name -DisplayName $DisplayName -GivenName $Name -Surname $Surname -AccountPassword $SecurePwd -Path "OU=Ученики, OU=Школа, DC=nizhnepopov, DC=local"  
  22.   
  23. Enable-ADAccount $Login  
  24.   
  25. }