Ай Лайн
Связаться
Отдел продаж +7 (812) 385-74-84
Время работы пн-пт с 9:00 до 18:00

New-ADUser — создание пользователей AD из PowerShell

Расширенные сценарии создания пользователей через New-ADUser: одиночное создание со всеми атрибутами, массовый импорт из CSV с заполнением полей и генерацией логинов. Базовый простой вариант — в статье Массовое добавление пользователей из CSV.

Одиночный пользователь со всеми атрибутами

$pass = Read-Host -AsSecureString "Пароль"
New-ADUser -Name "Иванов Иван" `
  -GivenName "Иван" -Surname "Иванов" `
  -SamAccountName "i.ivanov" `
  -UserPrincipalName "i.ivanov@ad.example.com" `
  -Path "OU=Users,OU=Office,DC=ad,DC=example,DC=com" `
  -AccountPassword $pass `
  -Title "Инженер" -Department "ИТ" -Company "Ромашка" `
  -OfficePhone "1234" -EmailAddress "i.ivanov@example.com" `
  -ChangePasswordAtLogon $true -Enabled $true

Нестандартные атрибуты (нет отдельного параметра) — через -OtherAttributes:

New-ADUser ... -OtherAttributes @{extensionAttribute1 = "b24-1042"; info = "временный подряд"}

Массовый импорт из CSV с полными полями

CSV (UTF-8, разделитель ;):

FirstName;LastName;Title;Department;Phone;Password
Иван;Иванов;Инженер;ИТ;1234;Ces-7364!
Пётр;Петров;Бухгалтер;Финансы;1235;Ces-1187!

Скрипт с автогенерацией логина (транслитерация фамилии + первая буква имени):

$translit = @{ "а"="a";"б"="b";"в"="v";"г"="g";"д"="d";"е"="e";"ё"="e";"ж"="zh";"з"="z";
  "и"="i";"й"="y";"к"="k";"л"="l";"м"="m";"н"="n";"о"="o";"п"="p";"р"="r";"с"="s";
  "т"="t";"у"="u";"ф"="f";"х"="h";"ц"="c";"ч"="ch";"ш"="sh";"щ"="sch";"ъ"="";"ы"="y";
  "ь"="";"э"="e";"ю"="yu";"я"="ya" }
function ConvertTo-Translit([string]$s) {
    -join ($s.ToLower().ToCharArray() | ForEach-Object { if ($translit["$_"] -ne $null) { $translit["$_"] } else { $_ } })
}

$ou = "OU=Users,OU=Office,DC=ad,DC=example,DC=com"
$domain = "ad.example.com"
Import-Csv "C:\import\users.csv" -Delimiter ";" | ForEach-Object {
    $login = (ConvertTo-Translit $_.FirstName).Substring(0,1) + "." + (ConvertTo-Translit $_.LastName)
    New-ADUser -Name "$($_.LastName) $($_.FirstName)" `
      -GivenName $_.FirstName -Surname $_.LastName `
      -SamAccountName $login -UserPrincipalName "$login@$domain" `
      -Title $_.Title -Department $_.Department -OfficePhone $_.Phone `
      -Path $ou `
      -AccountPassword (ConvertTo-SecureString $_.Password -AsPlainText -Force) `
      -ChangePasswordAtLogon $true -Enabled $true
    Write-Host "создан: $login"
}

Полезные дополнения

Сразу добавить в группы:

Add-ADPrincipalGroupMembership -Identity $login -MemberOf "vpn-users", "office-share-rw"

Проверить, что логин свободен, прежде чем создавать:

if (Get-ADUser -Filter "SamAccountName -eq '$login'") { Write-Warning "$login занят"; return }

Массовая выгрузка результата для сверки:

Get-ADUser -Filter * -SearchBase $ou -Properties Title,Department |
  Select-Object SamAccountName, Name, Title, Department |
  Export-Csv C:\import\created.csv -Delimiter ";" -Encoding UTF8 -NoTypeInformation
Оставить заявку