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

Массовое добавление пользователей из 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
Оставить заявку