Поиск по сайту

telegram

Интересуешься IT и системным администрированием? Подпишись на наш канал, где мы делимся инсайдами, новостями и практическими советами! Прокачай свои навыки вместе с нами!

Как импортировать пользователей AD из CSV с помощью PowerShell

Иногда возникает необходимость массового добавления пользователей в Active Directory. Вы уже создали CSV-файл с экспортированными данными пользователей, и теперь планируете использовать его для обратного импорта в AD. Самым быстрым и удобным способом выполнения этой задачи является использование PowerShell. В этой статье мы подробно расскажем, как с его помощью легко и эффективно импортировать пользователей в Active Directory.

Онлайн-курс: Zabbix 6. Мониторинг IT инфраструктуры предприятия.

Курс предлагает глубокое изучение Zabbix 6 и охватывает все ключевые аспекты: от установки и конфигурации до продвинутого мониторинга и автоматизации. Курс подходит как для начинающих, так и для опытных администраторов.

Скрипт PowerShell для импорта пользователей в Active Directory

Скрипт Import-ADUsers.ps1 предназначен для обработки данных из CSV-файла и создания пользователей в Active Directory. Для каждого пользователя будут созданы учетные записи с учетом следующих данных:

  1. Полное имя
  2. Имя
  3. Фамилия
  4. Отображаемое имя
  5. Логин пользователя
  6. Основное имя пользователя (UPN)
  7. Улица
  8. Город
  9. Штат/регион
  10. Почтовый индекс
  11. Страна
  12. Должность
  13. Отдел
  14. Компания
  15. Руководитель
  16. Организационная единица (OU)
  17. Описание
  18. Офис
  19. Номер телефона
  20. Электронная почта
  21. Мобильный телефон
  22. Заметки
  23. Статус учетной записи

Примечание: Учетные записи будут созданы с паролем по умолчанию P@ssw0rd1234. Рекомендуется изменить этот пароль на другой в коде PowerShell-скрипта.

Как импортировать пользователей в Active Directory из CSV-файла

В этом руководстве мы рассмотрим процесс массового импорта пользователей в Active Directory с использованием CSV-файла и PowerShell. Следуйте этим шагам, чтобы упростить создание учетных записей и сделать процесс более эффективным.

Шаг 1: Создайте CSV-файл с пользователями

Для импорта пользователей в Active Directory с помощью скрипта вам потребуется CSV-файл. Без него выполнить процесс невозможно.

Если у вас уже есть Active Directory, вы можете воспользоваться скриптом из статьи Экспорт пользователей AD в CSV с помощью PowerShell. После выполнения скрипта используйте созданный CSV-файл.

Если у вас нет Active Directory для экспорта пользователей и вам нужен только пример CSV-файла, который вы сможете отредактировать и использовать, скачайте файл ImportADUsers.csv.

Шаг 2: Подготовка скрипта PowerShell для импорта пользователей AD

Скачайте и поместите PowerShell-скрипт Import-ADUsers.ps1 в папку C:\scripts на вашем контроллере домена. Если папка scripts отсутствует, создайте её.

Убедитесь, что файл разблокирован, чтобы избежать ошибок при выполнении скрипта. Подробнее об этой проблеме можно узнать в статье Как исправить ошибку «Отсутствует цифровая подпись» при запуске скрипта PowerShell.

Альтернативный вариант: скопируйте код скрипта ниже и вставьте его в Блокнот. Сохраните файл с именем Import-ADUsers.ps1 и поместите его в папку C:\scripts.


<#
    .SYNOPSIS
    Import-ADUsers.ps1

    .DESCRIPTION
    Import Active Directory users from CSV file.

    .CHANGELOG
    V2.00, 02/11/2024 - Refactored script
#>

# Define the CSV file location and import the data
$Csvfile = "C:\temp\ImportADUsers.csv"
$Users = Import-Csv $Csvfile

# The password for the new user
$Password = "P@ssw0rd1234"

# Import the Active Directory module
Import-Module ActiveDirectory

# Loop through each user
foreach ($User in $Users) {
    try {
        # Retrieve the Manager distinguished name
        $managerDN = if ($User.'Manager') {
            Get-ADUser -Filter "DisplayName -eq '$($User.'Manager')'" -Properties DisplayName |
            Select-Object -ExpandProperty DistinguishedName
        }

        # Define the parameters using a hashtable
        $NewUserParams = @{
            Name                  = "$($User.'First name') $($User.'Last name')"
            GivenName             = $User.'First name'
            Surname               = $User.'Last name'
            DisplayName           = $User.'Display name'
            SamAccountName        = $User.'User logon name'
            UserPrincipalName     = $User.'User principal name'
            StreetAddress         = $User.'Street'
            City                  = $User.'City'
            State                 = $User.'State/province'
            PostalCode            = $User.'Zip/Postal Code'
            Country               = $User.'Country/region'
            Title                 = $User.'Job Title'
            Department            = $User.'Department'
            Company               = $User.'Company'
            Manager               = $managerDN
            Path                  = $User.'OU'
            Description           = $User.'Description'
            Office                = $User.'Office'
            OfficePhone           = $User.'Telephone number'
            EmailAddress          = $User.'E-mail'
            MobilePhone           = $User.'Mobile'
            AccountPassword       = (ConvertTo-SecureString "$Password" -AsPlainText -Force)
            Enabled               = if ($User.'Account status' -eq "Enabled") { $true } else { $false }
            ChangePasswordAtLogon = $true # Set the "User must change password at next logon"
        }

        # Add the info attribute to OtherAttributes only if Notes field contains a value
        if (![string]::IsNullOrEmpty($User.Notes)) {
            $NewUserParams.OtherAttributes = @{info = $User.Notes }
        }

        # Check to see if the user already exists in AD
        if (Get-ADUser -Filter "SamAccountName -eq '$($User.'User logon name')'") {

            # Give a warning if user exists
            Write-Host "A user with username $($User.'User logon name') already exists in Active Directory." -ForegroundColor Yellow
        }
        else {
            # User does not exist then proceed to create the new user account
            # Account will be created in the OU provided by the $User.OU variable read from the CSV file
            New-ADUser @NewUserParams
            Write-Host "The user $($User.'User logon name') is created successfully." -ForegroundColor Green
        }
    }
    catch {
        # Handle any errors that occur during account creation
        Write-Host "Failed to create user $($User.'User logon name') - $($_.Exception.Message)" -ForegroundColor Red
    }
}

  • Строка 21: Укажите путь к вашему CSV-файлу, отредактировав соответствующую строку.
  • Строка 25: Задайте пароль, изменив значение по умолчанию на желаемый.

Шаг 3: Запуск скрипта PowerShell для импорта пользователей AD

Откройте PowerShell от имени администратора и выполните скрипт для импорта пользователей из CSV-файла. Дождитесь завершения работы скрипта.


C:\scripts\.\Import-ADUsers.ps1

Во время выполнения скрипт отобразит следующую информацию:

  • Учетная запись успешно создана.
  • Учетная запись уже существует.
  • Ошибка при создании учетной записи с указанием причины.

A user with username Kylie.Davidson already exists in Active Directory.
A user with username Leonard.Clark already exists in Active Directory.
A user with username Madeleine.Fisher already exists in Active Directory.
A user with username Melanie.Scott already exists in Active Directory.
A user with username Nicholas.Murray already exists in Active Directory.
A user with username Piers.Bower already exists in Active Directory.
A user with username Ruth.Dickens already exists in Active Directory.
The user Sebastian.Nolan is created successfully.
The user Zoe.Roberts is created successfully.

Шаг 4: Проверка пользователей AD

Убедитесь, что пользователи успешно созданы в Active Directory. Для этого проверьте их наличие в соответствующих организационных единицах (OU) и убедитесь, что все данные указаны корректно.

Заключение

Вы узнали, как импортировать пользователей в Active Directory из CSV-файла с помощью PowerShell. Если вы ранее использовали скрипт для экспорта пользователей AD, и теперь хотите импортировать их обратно в Active Directory, выполните скрипт Import AD Users.

Вам понравилась эта статья? Тогда вам, скорее всего, будет интересна другая полезная статья Как экспортировать пользователей AD в CSV с помощью PowerShell.

Интересуешься IT и системным администрированием? Подпишись на SysAdminHub в телеграмм, чтобы узнавать обо всем первым — t.me/SysAdminHub


Комментарии (1)

This comment was minimized by the moderator on the site

не хочет работать import в winsrv 2025
При этом export работает

  Евгений Александрович Дилакторский
Вложения (1 / 5)
Здесь не опубликовано еще ни одного комментария

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

0 Значки
Вложения (0 / 5)
Поделитесь своим местоположением