Гид по технологиям

Создание множества пользователей в Server 2008 через PowerShell

• 5 min read • Администрирование • Обновлено 28 Nov 2025
Создание множества пользователей в Server 2008
Создание множества пользователей в Server 2008

Кому это нужно

Синхронизация приёма новых сотрудников, массовые миграции, тестовые окружения и автоматизация рутинных задач—все эти сценарии требуют быстрого создания большого числа учётных записей в AD. Эта инструкция показывает практический способ для Windows Server 2008 с использованием PowerShell и CSV-файла из Excel.

Что потребуется

  • Доступ администратора к контроллеру домена или прав, позволяющих создавать пользователей в целевом OU.
  • Excel или совместимая программа для создания CSV.
  • PowerShell на сервере (в Server 2008 PowerShell 2.0 чаще всего установлен).
  • ОУ (OU=People,DC=ваш-домен,DC=com) — замените на своё расположение.

Важно: не храните CSV с личными данными дольше, чем нужно; ограничьте доступ к папке и удаляйте файл после использования.

Схема: массовое создание пользователей в Server 2008 через PowerShell

Подготовка CSV

  1. В Excel создайте таблицу с двумя столбцами: First Name и Last Name (точно такие заголовки). Пример:
  • First Name | Last Name
  • John | Doe
  • Maria | Ivanova
  1. Сохраните как CSV: Файл → Сохранить как → выберите CSV (Comma delimited) и имя users.csv.

Сохранение как CSV в Excel

Создание скрипта на сервере

  1. На сервере создайте новый текстовый документ в удобной папке (например, C:\Users\Administrator).

Новый текстовый документ на сервере

  1. Вставьте в документ следующий код PowerShell (сохраните как PSusersScript.ps1, выбрав тип “Все файлы”):
$objOU=[ADSI]"LDAP://OU=People,DC=sysadmingeek,DC=com"
$dataSource=import-csv "users.csv"
foreach($dataRecord in $datasource) {
    $cn=$dataRecord.FirstName + " " + $dataRecord.LastName
    $sAMAccountName=$dataRecord.FirstName + "." + $dataRecord.LastName
    $givenName=$dataRecord.FirstName
    $sn=$dataRecord.LastName
    $sAMAccountName=$sAMAccountName.ToLower()
    $displayName=$sn + ", " + $givenName
    $userPrincipalName=$sAMAccountName + "@sysadmingeek.com"
    $objUser=$objOU.Create("user","CN="+$cn)
    $objUser.Put("sAMAccountName",$sAMAccountName)
    $objUser.Put("userPrincipalName",$userPrincipalName)
    $objUser.Put("displayName",$displayName)
    $objUser.Put("givenName",$givenName)
    $objUser.Put("sn",$sn)
    $objUser.SetInfo()
    $objUser.SetPassword("P@assw0rd")
    $objUser.psbase.InvokeSet("AccountDisabled",$false)
    $objUser.SetInfo()
}

Примечания:

  • Обязательно замените LDAP-путь OU=People,DC=sysadmingeek,DC=com на ваш собственный DN OU.
  • Замените домен в userPrincipalName (“@sysadmingeek.com”) на ваш домен.
  • Пароль в примере — демо. Используйте безопасную временную политику паролей и заставьте пользователей сменить пароль при первом входе.

Сохранение скрипта как PS1

Разрешение выполнения скриптов

Запустите PowerShell от имени администратора и выполните:

set-executionpolicy remotesigned

При запросе подтвердите (Y). Это позволяет запускать локальные и подписанные удалённые скрипты.

PowerShell: разрешение выполнения скриптов

Запуск скрипта

  1. Поместите users.csv и PSusersScript.ps1 в одну папку (например, C:\Users\Administrator).
  2. В Проводнике правой кнопкой по PSusersScript.ps1 → Запустить с помощью PowerShell.

Запуск скрипта через Проводник

После выполнения откройте “Active Directory Users and Computers” — новые учётные записи появятся в указанном OU.

Новые пользователи в Active Directory Users and Computers

Объяснение ключевых частей скрипта

  • [ADSI]”LDAP://…” — объект контейнера, в котором создаются пользователи.
  • Import-CSV — загружает строки из users.csv; каждая строка становится $dataRecord.
  • Create(“user”,”CN=”+$cn) — создаёт новый объект user с именем CN.
  • SetPassword/AccountDisabled — задают пароль и активируют учётную запись.

Коротко: скрипт собирает имя и фамилию, формирует sAMAccountName (lastname.firstname в нижнем регистре), displayName и UPN, затем создаёт пользователя и задаёт пароль.

Варианты и альтернативные подходы

  • ActiveDirectory модуль: в новых окружениях удобно использовать командлет New-ADUser (модуль ActiveDirectory), например: New-ADUser -Name $cn -GivenName $givenName -Surname $sn -SamAccountName $sAMAccountName -UserPrincipalName $userPrincipalName -Path “OU=People,DC=example,DC=com” -AccountPassword (ConvertTo-SecureString “P@ssw0rd” -AsPlainText -Force) -Enabled $true
  • Использование шаблона учётной записи: можно клонировать атрибуты из шаблона вместо установки каждого свойства вручную.
  • Автоматизация с учётом роли: при массовом приёме добавляйте группы безопасности в скрипт в зависимости от подразделения.

Когда этот способ не подойдёт (ограничения)

  • Если требуется сложная синхронизация атрибутов (телефон, отдел, маппинг LDAP из других источников) — потребуется более продвинутая ETL-логика.
  • При больших объёмах (тысячи учётных записей) лучше использовать пакетную обработку с проверкой конфликтов sAMAccountName.
  • На сервере без прав на запись в OU скрипт не выполнится.

Безопасность и соответствие

  • Никогда не храните пароли в открытом виде в общедоступных скриптах. Рассмотрите использование временных паролей и флага “User must change password at next logon”.
  • Ограничьте права на папку с CSV и скриптом.
  • Логи и аудит: фиксируйте создание учётных записей в журнале безопасности или внешней системе логирования.
  • Конфиденциальность: CSV с именами — персональные данные. Удаляйте файлы после использования и контролируйте доступ (GDPR/локальные правила).

Тестовый план и критерии приёмки

Критерии приёмки

  • В OU появился ожидаемый список учётных записей по CSV.
  • sAMAccountName и UPN соответствуют правилам организации.
  • Пароль установлен и учётные записи активны.
  • Пользователи попали в ожидаемые группы (если предусмотрено).

Тестовые случаи

  • Позитивный: 3 строки CSV — все созданы без ошибок.
  • Конфликт имён: CSV содержит дубликаты — скрипт сообщает об ошибке или пропускает.
  • Неполный набор: отсутствует Last Name — скрипт валидирует и не создаёт запись.

Откат / удаление созданных пользователей

Если нужно откатить изменения (удалить созданных пользователей), подготовьте CSV с SamAccountName или имеющимися UPN и выполните безопасный скрипт удаления, например:

$dataSource=Import-Csv "users.csv"
foreach($rec in $dataSource) {
    $sAM=$rec.FirstName + "." + $rec.LastName
    $sAM=$sAM.ToLower()
    $u = Get-ADUser -Filter {SamAccountName -eq $sAM}
    if($u) { Remove-ADUser $u -Confirm:$false }
}

Внимание: проверяйте выборку перед удалением. Запустите на тестовом OU.

Чек-листы по ролям

Администратор

  • Проверить права на OU.
  • Подготовить CSV и удалить лишние столбцы.
  • Обновить DN OU и домен в скрипте.
  • Настроить ExecutionPolicy.
  • Запустить скрипт и верифицировать результат.

Аудитор / Сопровождение

  • Проверить логи создания.
  • Убедиться, что временные пароли назначены корректно и политики паролей выполнены.

Частые ошибки и способы исправить

  • “Нет доступа к OU” — проверьте права учетной записи, под которой выполняется скрипт.
  • “Имя уже существует” — проверьте коллизии sAMAccountName; добавьте логику генерации уникальных имён.
  • Некорректные символы в CSV — убедитесь в кодировке UTF-8 без BOM или используйте Import-Csv -Encoding Default.

1‑строчная глоссарий

  • sAMAccountName: короткое имя пользователя для совместимости с NetBIOS.
  • UPN (userPrincipalName): форма входа вида user@domain.
  • OU: organizational unit — контейнер в AD.

Краткое резюме

  • Подготовьте CSV с полями First Name и Last Name.
  • Проверьте и замените DN OU и домен в примере скрипта.
  • Разрешите выполнение скриптов и запустите PSusersScript.ps1.
  • Контролируйте безопасность файлов и аудит.

Важная заметка: этот метод экономит время, но требует внимательной проверки на тестовой среде и продуманной политики паролей и аудита перед применением в продакшене.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро