В этой статье мы рассмотрим, как изменить (сбросить) пароль одного или нескольких пользователей Active Directory с помощью графической оснастки Active Directory Users and Computers, из командной строки, а также с помощью PowerShell командлета Set-ADAccountPassword .
Изменить пароль пользователя домена из графической консоли Active Directory
Для сброса пароля пользователя Active Directory можно использовать графическую оснастку dsa.msc
(Active Directory Users & Computers — ADUC ). Воспользуйтесь поиском в консоли ADUC и найдите учетную запись пользователя, которому нужно изменить пароль. Щелкните по нему правой кнопкой и выберите пункт “Смена пароля” (Reset password).
Укажите новый пароль (дважды). Здесь можно включить две опции:
- User must change password at next logon – если вы хотите, чтобы пользователь сам задал себе новый пароль при следующем входе;
- Unlock user’ s account – включите эту опцию, если вы хотите разблокировать пользователя (если учетная запись заблокирована политикой безопасности AD из-за многократных попыток входа с неверным паролем).
Это самый просто и интуитивно понятный способ сброса пароля пользователя домена.
Также в свойствах пользователя на вкладке редактора атрибутов AD вы можете найти информацию о дате последней смены пароля. Это значение хранится в атрибуте пользователя pwdLastSet .
Для сброса пароля ваша учетной запись должна обладать соответствующими правами. По-умолчанию обычные пользователи AD не могут сбросить пароль других аккаунтов. Такие права есть только у учетных записей с правами администратора домена (Domain Admins), или Account Operators. Вы можете предоставить другим группам пользователям право на сброс паролей в определенных OU с помощью делегирования. По ссылке доступен пример делегирования прав на сброс паролей и разблокировку пользователей группе HelpDesk.
Чтобы проверить, что у вашей учетной записи есть право на сброс пароля определенного пользователя, откройте его свойства, перейдите на вкладку Security -> Advanced -> Effective Access -> укажите имя своей учетной записи -> убедитесь, что у вас есть разрешение Reset Password.
Как сбросить пароль пользователю Active Directory с помощью PowerShell?
Вы можете использовать команды PowerShell для сброса пароля пользователя в AD. Для этого можно использовать используется командлет Set-ADAccountPassword , входящий в модуль Active Directory для Windows PowerShell (в десктопых версиях Windows он входит в состав RSAT , а в серверных редакциях устанавливается в виде отдельного компонента AD DS Snap-Ins and Command-Line Tools). Перед использованием модуля его необходимо импортировать в сессию PowerShell:
Import-module ActiveDirectory
Чтобы сбросить пароль для пользователя dakimov и установить новый пароль SuperStr0n@p1, выполните команду:
Set-ADAccountPassword dakimov -Reset -NewPassword (ConvertTo-SecureString -AsPlainText “SuperStr0n@p1” -Force -Verbose) –PassThru
alert]Для автоматической генерации сложный паролей пользователям вы можете использовать метод GeneratePassword, описанный в статье Генерация случайных паролей с помощью PowerShell . [/alert]
По умолчанию командлет возвращает объект и ничего не отображает в консоли. Чтобы вывести информацию об объекте пользователя в AD мы используем параметр –PassThru .
В качестве имени пользователя можно указать sAMAccountName (как в нашем случае), objectGUID, SID пользователя , или его DN (Distinguished Name, например CN=Akimov,OU=Users,DC=remontka,DC=ru).
Если при смене пароля пользователя не указывать параметр –Reset , необходимо указать старый и новый пароль учетной записи.
Set-ADAccountPassword : The password does not meet the length, complexity, or history requirement of the domain.
Это означает что, новый пароль не соответствует требования сложности, длины и т.д., заданным в доменной политике паролей или гранулированной политике паролей , действующей на учетную запись пользователя.
Результирующие настройки парольной политики пользователя в домене можно вывести так:
Get-ADUserResultantPasswordPolicy -Identity a.novak
Если у вас включено ведение истории PowerShell команд , и вы не хотите, чтобы пароли в открытом виде сохранялись в сессии PoSh, пароль как и при создании пользователя нужно преобразовать в безопасную строку (подробнее о защите паролей в скриптах PowerShell здесь ):
$NewPasswd=Read-Host "Введите новый пароль пользователя" –AsSecureString
Теперь можно задать новый пароль пользователю:
Set-ADAccountPassword dakimov -Reset –NewPassword $NewPasswd –PassThru
При сбросе пароля можно принудительно снять блокировку ученой записи , если она была заблокирована ранее (как найти с какого компьютера блокируется учетная запись, смотрите в статье Поиск источника блокировки пользователя в Active Directory ):
Unlock-ADAccount –Identity dakimov
Чтобы пользователь при следующем входе в домен самостоятельно сменил данный пароль на новый, нужно изменить его свойства в AD , выполнив команду:
Set-ADUser -Identity dakimov -ChangePasswordAtLogon $true
Вы можете совместить в одной строке команду смены пароля и включение требования сменить пароль ( атрибут userAccountControl ):
Set-ADAccountPassword dakimov -NewPassword $NewPasswd -Reset -PassThru | Set-ADuser -ChangePasswordAtLogon $True
С помощью командлета Get-ADUser вы можете убедиться, что пароль сброшен успешно. Выведите время последней смены пароля аккаунта:
Get-ADUser dakimov -Properties * | select name, pass*
При сбросе пароля на контроллере домена (DC) регистрируется событие EventID 4724. Это событие помогает определить учетную запись, которая выполнила сброс пароля пользователя .
Get-ADUser -Identity avivanov -Properties msDS-UserPasswordExpiryTimeComputed | select-object @{Name="ExpirationDate";Expression= {[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed") }}
PowerShell скрипт для сброса пароля нескольких пользователей AD
Выше мы показали, как из PowerShell сбросить пароль одного пользователя в AD. Рассмотрим теперь другой сценарий – когда вам нужно сменить пароли сразу нескольких пользователей.
Например, вы хотите сбросить пароль всем сотрудникам департамента Sales на одинаковый и заставить сменить его при следующем входе. Вы можете использовать параметр –Filter для выбора пользователей с определенным значением в одном из атрибутов:
get-aduser -filter "department -eq 'Sales Dept' -AND enabled -eq 'True'" | Set-ADAccountPassword -NewPassword $NewPasswd -Reset -PassThru | Set-ADuser -ChangePasswordAtLogon $True
Рассмотрим еще один пример. Допустим, у вас есть CSV/Excel файл, в котором содержится список пользователей, которым нужно сбросить пароли и уникальный пароль для каждого пользователя. Формат файла users.csv:
sAMAccountName;NewPassword_x000D_aivanov;PaSSde0r1_x000D_bpetrov;New$isde01_x000D_ssidorov;k@nndj!223
С помощью следующего скрипта PowerShell можно сбросить пароль для каждой учетной записи пользователя из CSV файла:
Import-Csv users.csv -Delimiter ";" | Foreach {
$NewPass = ConvertTo-SecureString -AsPlainText $_.NewPassword -Force
Set-ADAccountPassword -Identity $_.sAMAccountName -NewPassword $NewPass -Reset -PassThru | Set-ADUser -ChangePasswordAtLogon $false
}
После выполнения данного кода всем пользователям в файле будет установлен новый уникальный пароль.
Изменить пароль пользователя в домене из командной строки
Если на компьютере не установлена консоль ADUC, или модуль RSAT-AD-PowerShell, вы можете использовать консольную команду net use для сброса пароля. Чтобы получить информацию о пользователе в домене, выполните команду:
net user a.novak /domain
В командной строке показана базовая информацию о пароле пользователя в домене:
Password last set 4/20/2022 2:10:05 AM_x000D_Password expires Never_x000D_Password changeable 4/21/2022 2:10:05 AM_x000D_Password required Yes_x000D_User may change password Yes_x000D_Last logon 4/20/2022 2:58:47 AM_x000D_Logon hours allowed All
Чтобы сбросит пароль этого пользователя, выполните команду:
net user a.novak /domain *
Укажите новый пароль и подтвердите его:
Type a password for the user: xx_x000D_Retype the password to confirm: xx_x000D_The command completed successfully.