Skip to main content

Заводим большое количество учёток пользователей в AD DS c помощью Powershell. Часть 2.

Простой скрипт, или командлет для создания единичных доменных учетных записей пользователей через Powershell я вам показал в одной из прошлых  статей.

Но что делать в том случае, если в Active Directory нужно создать сразу 30, 50, 500 учетных записей пользователей?! — Самый удобный вариант для таких случаев это создать и сохранить список пользователей в формате CSV (Excel) файла, а затем запустить специальный PowerShell скрипт.

Пакетное создание учетных записей в домене AD DS с помощью Powershell

Это я вам сейчас и продемонстрирую в рамках данной статьи. Погнали!

Открываем наш любимый Excel, и создаем файл в формате CSV.

В данном файле нужно заполнить все значимые для вас атрибуты пользователей.

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

1. FirstName
2. LastName
3. Initials
4. SamAccountName
5. Phone
6. Department
7. JobTitle
8. Password
9. OU

Нужно заполнить данные пользователей и сохранить файл Excel в формате CSV c запятыми в качестве разделителей.

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

Теперь можно импортировать данный CSV-файл (например, new_users_adds.csv) и создать в домене новых пользователей.

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

А вот и сам код Powershell-cкрипта для массового создания пользователей из CSV-файла в домене Active Directory:

Import-Module activedirectory
Import-Csv "C:psnew_users_adds.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
}

После выполнения скрипта, откройте консоль mmc с оснасткой Active Directory Users and Computers, разверните указанный контейнер и убедитесь, что в Acticve Directory появились свежесозданные учетные записи пользователей. На этом всё.

Подписывайтесь на обновления блога:

Наша Группа ВКонтакте

Наш RSS-канал

Наш Telegram-канал

E-mail подписка

4 thoughts to “Заводим большое количество учёток пользователей в AD DS c помощью Powershell. Часть 2.”

  1. Что можно изменить, дабы можно было использовать Кириллицу в имени и фамилии?
    Полагаю, csv сохранить необходимо будет в кодировке unicode…

  2. Скажите пожалуйста можно сделать чтобы из транскрипта фамилии и имени создавался SamAccountName?
    Примену Иванов Алексей транслировался в aivanov

  3. Назрел необходимость завести 150 студентов с логинами 101_01… 101_50. 110_01….110_50 и назначенными мною паролями в группу набор 2023, PS не пользовался, но понял, что надо просто сделать EXCEL файл и написать подобный скрипт, МОЖНО ПОЛНОСТЬЮ ПРИМЕР???
    Спасибо

Добавить комментарий

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