Массовое добавление пользователей из CSV
Открываем PowerShell ISE, нажимаем создать, вставляем скрипт
$CSV = Import-Csv "C:\iline\users.csv"
foreach($LINE in $CSV)
{
$NewUser="$($LINE.USERNAME)"
$NewPass="$($LINE.PASSWORD)"
$Domain="@ad.example.ru"
$UPN=$NewUser+$Domain
$SecurePass=ConvertTo-SecureString -AsPlainText -Force -String "$NewPass"
New-ADUser -Name $NewUser -Enabled $true -AccountPassword $SecurePass -UserPrincipalName $UPN
}
В первой строчке меняем расположение файла CSV
В переменной $Domain меняем название домена, чтобы прописался UPN (формат пользователя в виде user@domain)
Файл должен иметь кодировку UTF-8, разделитель должен быть запятая (,) или добавляем для Import-Csv параметр
-delimiter «знак_разделителя»
Для примера:
USERNAME,PASSWORD
user01,pass-pass
user02,pass-pass
После этого создаются пользователи в стандартном расположении в AD - Users
Как сгенерировать пароли в CSV
Для примера выше формула следующая
="Ces-"&СЛУЧМЕЖДУ(1000;9999)&СИМВОЛ(33)
Сначала идет постоянная строка («Ces-»), дальше через знак & добавляется случайное число в заданном диапазоне (у нас от 1000 до 9999) и дальше также через & добавляется символ (в примере это !)
Если хотим рандомный символ, то используем функцию СИМВОЛ(СЛУЧМЕЖДУ(33;126))
Также из этого CSV можем импортировать данные в менеджер паролей
Для более сложных вариантов с заполнением нужных полей и правилами обратной транслитерации есть статья New-ADUser — создание пользователей AD из PowerShell
Обновлённый вариант
# Укажите путь к CSV-файлу
$csvPath = "C:\Users\adminuser\Desktop\ad_import_example.csv"
# Читаем CSV-файл
$users = Import-Csv -Path $csvPath -Delimiter "," | Where-Object {$_ -ne $null}
# OU, в которую добавляем пользователей
$OU = "OU=test,DC=ad,DC=example,DC=ru"
# Проходим по всем пользователям
foreach ($user in $users) {
# Проверяем, что все обязательные поля заполнены
if (-not $user.FirstName -or -not $user.LastName -or -not $user.SamAccountName -or -not $user.Password) {
Write-Host "Пропущена строка: не все поля заполнены у пользователя $($user.SamAccountName)" -ForegroundColor Yellow
continue
}
# Удаляем лишние пробелы
$user.FirstName = $user.FirstName.Trim()
$user.LastName = $user.LastName.Trim()
$user.SamAccountName = $user.SamAccountName.Trim()
$user.Password = $user.Password.Trim()
$user.Description = $user.Description.Trim()
# Формируем DisplayName (Выводимое имя)
$displayName = "$($user.FirstName) $($user.LastName) "
# Преобразуем пароль в защищенный формат
$securePassword = ConvertTo-SecureString $user.Password -AsPlainText -Force
# Создаем пользователя в Active Directory
try {
New-ADUser `
-GivenName $user.FirstName `
-Surname $user.LastName `
-Name "$($user.FirstName) $($user.LastName)" `
-DisplayName $displayName `
-UserPrincipalName "$($user.SamAccountName)@ad.example.ru" `
-SamAccountName $user.SamAccountName `
-EmailAddress $user.Email `
-Description $user.Description `
-Path $OU `
-AccountPassword $securePassword `
-Enabled $true `
-PassThru `
Write-Host "Добавлен пользователь: $displayName ($($user.SamAccountName))" -ForegroundColor Green
}
catch {
Write-Host "Ошибка при добавлении пользователя $($user.SamAccountName): $_" -ForegroundColor Red
}
}
Write-Host "Завершено!" -ForegroundColor Cyan
Пример .csv файла. Кодировка нужна UTF-8
LastName,FirstName,Description,Email,SamAccountName,Password
Иван,Иванов,Оператор кранаманипулятора,user@example.com,ivanov.i,PASSWORD