Создание учетных записей пользователей
Каждому, кто работал с ActiveDirectory, приходилось создавать учетные записи пользователей. И хотя это делается легко и просто – в несколько щелчков мышкой – иногда, особенно в крупных организациях, приходится создавать много учетных записей в течение дня. Иногда – в районе сотни.
Для нашего примера, в качестве списка пользователей будем брать CSV-файл со следующими полями:
Name – имя пользователя
Surname – фамилия пользователя
Password – пароль
OU – организационное подразделение, где будет находиться пользователь (вида Contoso_Users/Fin/Accounting)
Вначале нам нужно импортировать пользователей из списка:
$Users = Import-CSV $1 –Delimiter “;”
Параметр $1 означает, что в качестве пути к CSV-файлу будет использоваться первый по счету параметр командной строки. Запускаться скрипт будет следующим образом:
PS C:\Users\admin > Add_Users.ps1 c:\temp\users.csv
Далее нам нужно пройтись по всему массиву пользователей из списка:
Foreach($CurrentUser in $Users) {
Знак открытой фигурной скобки означает начало цикла. Этот цикл проходит по всем объектам списка, и прискаивает текущий объект переменной $CurrentUser.
Затем, для упрощения – присвоим значения соответствующих полей отдельным переменным:
$Name = $CurrentUser.Name
$Surname = $CurrentUser.Surname
$Password = $CurrentUser.Password
$OU = $CurrentUser.OU
Для того, чтобы задать пароль пользователю – необходимо перевести его в шифрованный формат SecureString:
$SecurePwd = ConvertTo-SecureString -AsPlainText -Force -String $Password
Так же, OU нам нужно перевести в формат, соответствующий стандарту LDAP (для примера выше: “OU=Accounting,OU= Fin,OU= Contoso_Users,DC=contoso,DC=com”).
Для этого вначале разделим строку $OU на отдельные составляющие:
$OUTmp = $OU –Split “/”
В результате переменная $OUTmp будет содержать массив из всех элементов пути:
PS C:\Users\admin> $OUTmp
Contoso_Users
Fin
Accounting
Далее, используя командлет Foreach-Object, получим из нашего массива первую часть LDAP-пути:
$Path = “” #незабудьте проинициализировать переменную!
$OUTmp | ForEach-Object {$Path = "OU=$_," + $Path}
В переменной $Path появляется первая часть LDAP-пути:
PS C:\Users\admin> $Path
OU=Accounting,OU=Fin,OU=Contoso_Users,
Теперь нам нужно получить полный путь, добавив к пути домен:
$Path += “DC=contoso,DC=com”
Получили полный LDAP-путь:
PS C:\Users\admin> $Path
OU=Accounting,OU=Fin,OU=Contoso_Users,DC=contoso,DC=com
Теперь сформируем дисплейное имя пользователя, его логин, User Principal Name.
$Login = $Name[0] + “.” + $Surname #логин формируется из первой буквы имени и фамилии, например: i.ivanov
$Displayname = $Name + “ “ + $Surname #Дисплейное имя: Ivan Ivanov
$UserPrincipalName = $Login + “@contoso.com”
Наконец, можно перейти к самой главной процедуре: созданию учетной записи пользователя.
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
Теперь нужно закрыть цикл знаком «}». Можно сохранять скрипт и пробовать.
Готовый скрипт будет выглядеть следующим образом:
Import-Module ActiveDirectory
$Users = Import-CSV $1 –Delimiter “;”
Foreach($CurrentUser in $Users) {
$Name = $CurrentUser.Name
$Surname = $CurrentUser.Surname
$Password = $CurrentUser.Password
$OU = $CurrentUser.OU
$SecurePwd = ConvertTo-SecureString -AsPlainText -Force -String $Password
$OUTmp = $OU –Split “/”
$Path = “” #незабудьте проинициализировать переменную!
$OUTmp | ForEach-Object {$Path = "OU=$_," + $Path}
$Path += “DC=contoso,DC=com”
$Login = $Name[0] + “.” + $Surname
$Displayname = $Name + “ “ + $Surname #в кавычках — пробел!
$UserPrincipalName = $Login + “@contoso.com”
New-ADUser $Displayname –SamAccountName $Login –UserPrincipalName $UserPrincipalName-DisplayName $DisplayName -AccountPassword $SecurePwd -ChangePasswordAtLogon 1 -Path$Path
Enable-ADAccount $Login
}
