New-ADUser: Создаем пользователей в AD с помощью PowerShell

Самый простой способ создать нового пользователя в домене Active Directory – воспользоваться графической mmc оснасткой ADUC (Active Directory Users and Computers). Но в том случае, если в домене нужно завести сразу несколько учетных записей, их создание в ручном режиме может стать довольно утомительной для администратора процедурой. В этой статье мы рассмотрим пример автоматизации создания учетных записей пользователей в AD с помощью командлета PowerShell New-ADUser.

Используем командлет New-ADUser для создания новой учетной записи AD

Командлет New-ADUser входит в состав модуля Active Directory для PowerShell. Для использования этого модуля, нужно установить на компьютере соответствующую ОС версию RSAT и включить компонент Active Directory Module for Windows PowerShell.

Для импорта модуля в сессию PowerShell выполните команду:

Import-Module activedirectory

Полный синтаксис командлета New-ADUser можно получить с помощью команды

Get-Command New-ADUser –Syntax

New-ADUser - синтаксис

В минимальной версии для создания новой учетной записи пользователя в AD достаточно указать только его имя.
New-ADUser testuser1

Создаем нового пользователя в домене Active Directory

Как вы видите, новая учетная запись пользователя создалась в контейнере Users и является отключенной. Для использования данной учетной записи, ее нужно включить (командлет Enable-ADAccount), задать пароль (командлет Set-ADAccountPassword) и/или другие атрибуты (по необходимости).

Чтобы создать полноценную работоспособную учетную запись в определенном контейнере (OU) домена с паролем и сразу активировать ее, воспользуйтесь такой командой.

New-ADUser -Name "Test User2" -GivenName "Test" -Surname "User2" -SamAccountName "testuser2" -UserPrincipalName "testuser2@contoso.com" -Path "OU=Users,OU=Accounts,OU=SPB,DC=winitpro,DC=loc" -AccountPassword(Read-Host -AsSecureString "Input Password") -Enabled $true

Команда предложит сразу указать пароль нового пользователя (в защищенном виде)

Примечание. Пароль пользователя должен соответствовать доменным политикам безопасности паролей по длине, сложности и т.д., в противном случае командлет вернет ошибку: New-ADUser : The password does not meet the length, complexity, or history requirement of the domain.

Информацию о созданном пользователе домена можно получить с помощью командлета Get-ADUser:

Get-ADUser testuser2

Массовое создание новых пользователей в AD из CSV скриптом PowerShell

В том случае, если в Active Directory нужно создать сразу большое количество пользователей, удобнее сохранить список пользователей в формате CSV (Excel) файла, а затем запустить специальный PowerShell скрипт. В данном файле нужно заполнить все значимые для вас атрибуты пользователей.

К примеру, мой Excel файл с пользователями состоит из 9 колонок и имеет следующий формат шапки:

FirstName;LastName;Initials;SamAccountName;Phone;Department;JobTitle;Password;OU

Заполните данные пользователей и сохраните Exсel файл с в формате CSV c запятыми, в качестве разделителей. Кодировка файла должна быть обязательно UTF-8 (важно!). Кроме того, т.к. в значениях столбца OU есть запятые, нужно экранировать их, взяв в двойные кавычки.

список пользователей в excel

Теперь можно импортировать данный CSV файл (new_ad_users2.csv) и создать в домене новых пользователей. Код готового PowerShell скрипта представлен ниже:

csv файл со списком пользвоателей, которых нужно создать в AD

Примечание.

  • Имя пользователя в домене мы будем заводить на английской языке, поэтому для транслитерации имен и фамилий пользователей с кириллицы в латиницу мы добавим в скрипт отдельную функцию Translit.
  • Если в качестве разделителя CSV файла используется “;”, в командлет Import-Csv нужно добавить аргумент -delimiter «;»

Import-Module activedirectory
Import-Csv "C:\ps\new_ad_users2.csv" | ForEach-Object {
$upn = $_.SamAccountName + “@contoso.loc”
$uname = $_.LastName + " " + $_.FirstName + " " + $_.Initials
#переводим в транслит фамилию, имя и отчество
$transLastName=Translit($_.LastName)
$transFirstName=Translit($_.FirstName)
$transInitials=Translit($_.Initials)
$transuname = $transLastName + " " + $transFirstName + " " + $transInitials
New-ADUser -Name $transuname `
-DisplayName $uname `
-GivenName $_.FirstName `
-Surname $_.LastName `
-Initials $_.Initials `
-OfficePhone $_.Phone `
-Department $_.Department `
-Title $_.JobTitle `
-UserPrincipalName $upn `
-SamAccountName $_.samAccountName `
-Path $_.OU `
-AccountPassword (ConvertTo-SecureString $_.Password -AsPlainText -force) -Enabled $true
}

#сама функция транслитерации
function global:Translit {
param([string]$inString)
$Translit = @{
[char]'а' = "a"
[char]'А' = "A"
[char]'б' = "b"
[char]'Б' = "B"
[char]'в' = "v"
[char]'В' = "V"
[char]'г' = "g"
[char]'Г' = "G"
[char]'д' = "d"
[char]'Д' = "D"
[char]'е' = "e"
[char]'Е' = "E"
[char]'ё' = "yo"
[char]'Ё' = "Yo"
[char]'ж' = "zh"
[char]'Ж' = "Zh"
[char]'з' = "z"
[char]'З' = "Z"
[char]'и' = "i"
[char]'И' = "I"
[char]'й' = "j"
[char]'Й' = "J"
[char]'к' = "k"
[char]'К' = "K"
[char]'л' = "l"
[char]'Л' = "L"
[char]'м' = "m"
[char]'М' = "M"
[char]'н' = "n"
[char]'Н' = "N"
[char]'о' = "o"
[char]'О' = "O"
[char]'п' = "p"
[char]'П' = "P"
[char]'р' = "r"
[char]'Р' = "R"
[char]'с' = "s"
[char]'С' = "S"
[char]'т' = "t"
[char]'Т' = "T"
[char]'у' = "u"
[char]'У' = "U"
[char]'ф' = "f"
[char]'Ф' = "F"
[char]'х' = "h"
[char]'Х' = "H"
[char]'ц' = "c"
[char]'Ц' = "C"
[char]'ч' = "ch"
[char]'Ч' = "Ch"
[char]'ш' = "sh"
[char]'Ш' = "Sh"
[char]'щ' = "sch"
[char]'Щ' = "Sch"
[char]'ъ' = ""
[char]'Ъ' = ""
[char]'ы' = "y"
[char]'Ы' = "Y"
[char]'ь' = ""
[char]'Ь' = ""
[char]'э' = "e"
[char]'Э' = "E"
[char]'ю' = "yu"
[char]'Ю' = "Yu"
[char]'я' = "ya"
[char]'Я' = "Ya"
}
$outCHR=""
foreach ($CHR in $inCHR = $inString.ToCharArray())
{
if ($Translit[$CHR] -cne $Null )
{$outCHR += $Translit[$CHR]}
else
{$outCHR += $CHR}
}
Write-Output $outCHR
}

powershell скрипт для массового заведения пользователей из CSV файла в домене Active Directory

После выполнения скрипта, откройте консоль ADUC, разверните указанный контейнер и убедитесь, что в AD появились новые учетки пользователей (отследить создание учетных записей в AD можно так: Получение списка учетных записей AD, созданных за последние 24 часа.)

новый пользователь в AD

Создаваемые учетные записи можно сразу добавить в определенную группу AD с помощью командлета Add-AdGroupMember, для этого нужно немного модифицировать скрипт, добавив в цикле строку:

Add-AdGroupMember -Identity AllowPublicInet -Members $_.samAccountName

Или сразу установить фотографию пользователя в AD, чтобы она отображалась в Outlook и Lync:

Set-ADUser $_.samAccountName -Replace @{thumbnailPhoto=([byte[]](Get-Content "C:\ps\user1_photo.jpg" -Encoding byte))}


Предыдущая статья Следующая статья


Комментариев: 5 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)