Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

Windows Server, AD и Роли

Массовый сброс паролей в Active Directory через PowerShell: гайд

Обновлено: 27.08.2026 · Официальная документация ↗

Задача массовой смены паролей в AD

При плановой смене регламентов безопасности, подозрении на компрометацию учетных записей или приеме на работу группы сотрудников администратору требуется сбросить пароли сразу десяткам или сотням пользователей в Active Directory. Вручную менять пароль в графической оснастке dsa.msc для каждого аккаунта слишком долго.

Требования к операции:

  • Установка единого временного безопасного пароля (например, TempPass2025!).
  • Обязательное включение флага «Требовать смену пароля при следующем входе в систему» (Change password at next logon).
  • Автоматическая разблокировка учетных записей при необходимости.

Пошаговый скрипт PowerShell для массового сброса

Для выполнения задачи используется стандартный модуль ActiveDirectory на контроллере домена или рабочем месте с установленным RSAT.

Шаг 1. Сброс паролей для всех пользователей конкретного подразделения (OU)

Запустите консоль PowerShell от имени Администратора и выполните следующий готовый скрипт (замените путь OU и домен на свои):

# Задаем временный пароль в виде защищенной строки:
$TempPassword = ConvertTo-SecureString "Welcome2025!" -AsPlainText -Force

# Указываем целевое подразделение (OU):
$TargetOU = "OU=Sales,OU=Users,DC=company,DC=local"

# Получаем всех пользователей и меняем пароли:
Get-ADUser -Filter * -SearchBase $TargetOU | ForEach-Object {
    Set-ADAccountPassword -Identity $_.SamAccountName -NewPassword $TempPassword -Reset
    Set-ADUser -Identity $_.SamAccountName -ChangePasswordAtLogon $true
    Unlock-ADAccount -Identity $_.SamAccountName
    Write-Host "Пароль успешно сброшен для: $($_.SamAccountName)" -ForegroundColor Green
}

Шаг 2. Массовый сброс по списку из файла CSV

Если пользователи находятся в разных папках, создайте текстовый файл users.csv со списком логинов в колонке Username:

Import-Csv -Path "C:\scripts\users.csv" | ForEach-Object {
    $SecurePass = ConvertTo-SecureString "NewPass2025!" -AsPlainText -Force
    Set-ADAccountPassword -Identity $_.Username -NewPassword $SecurePass -Reset
    Set-ADUser -Identity $_.Username -ChangePasswordAtLogon $true
    Write-Host "Готово для $($_.Username)" -ForegroundColor Cyan
}
💡 Практика специалистов: При массовом сбросе паролей всегда добавляйте команду Unlock-ADAccount, так как заблокированные ранее пользователи не смогут сменить пароль при входе даже при включенном флаге ChangePasswordAtLogon.

Частые вопросы (FAQ)

Что делать, если при выполнении скрипта возникает ошибка сложности пароля?

Временный пароль в скрипте должен полностью соответствовать действующей политике домена: содержать строчные и заглавные буквы, цифры, спецсимволы и иметь минимальную длину (обычно от 8 символов).

Как принудительно завершить активные сессии пользователей после смены пароля?

Смена пароля в Kerberos не сбрасывает существующий билет TGT мгновенно. Пользователь продолжит работать, пока билет не истечет (по умолчанию 10 часов) или пока он не заблокирует экран.

Как запустить скрипт, если модуль ActiveDirectory не найден?

Установите компоненты администрирования RSAT командой: Add-WindowsCapability -Online -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0.

Можно ли сгенерировать уникальный случайный пароль для каждого пользователя?

Да, можно дописать генератор строк через System.Web.Security.Membership::GeneratePassword и сохранять результаты в файл отчета.

Полезные материалы
Рекомендуем