Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Типовые задачи администрирования AD с использов...docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
125 Кб
Скачать
☆

Создание учетных записей пользователей

Каждому, кто работал с 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

}