Администратор может изменить пароль локальных пользователей компьютера с помощью графической оснастки lusrmgr.msc. Чтобы изменить пароль доменного пользователя преимущественно используется графическая консоль Active Directory Users and Computer (ADUC). В некоторых случаях администратору бывает необходимо изменить пароль пользователя из командной строки или скрипта. В этой статье мы покажем, как управлять паролями локальных и доменных (из домена Active Directory) пользователей с помощью PowerShell.
Как изменить пароль пользователя AD с помощью PowerShell?
Чтобы сбросить пароль пользователя в AD нужно использовать комадлет Set-ADAccountPassword из модуля PowerShell Active Directory. Естественно у пользователя, который выполняет команду должны быть права администратора домена или ему делегированы полномочия на сброс паролей пользователям AD.
Перед использованием командлета Set-ADAccountPassword необходимо импортировать данный модуль в сессию PowerShell:
import-module activedirectory
Пароль в памяти компьютера желательно хранить в защищенном виде, поэтому можно попросить администратора указать пароль следующим образом:
$newPass=Read-Host "Введите новый пароль" -AsSecureString
Введите новый пароль в консоли.
Лучше всего указывать имя учетной записи в виде samAccountname. Например, чтобы изменить пароль пользователю aaivanov, выполните команду:
Set-ADAccountPassword aaivanov -NewPassword $newPass
Можно задать новый пароль пользователя прямо в коде скрипта (в открытом виде):
Set-ADAccountPassword aaivanov –NewPassword (ConvertTo-SecureString -AsPlainText –String "Hard6P@ss " -force)
Если нужно, чтобы пользователь сам сменил пароль при следующей авторизации на любом компьютере домена, выполните команду:
Set-ADUser aaivanov -ChangePasswordAtLogon $True
Вы можете сбросить пароль сразу нескольким пользователям. Можно сохранить список учетных записей в обычном текстовом файле sbros_parolya_spisok_users.txt (каждая строка – одна учтенная запись). Воспользуйтесь таким скриптом:
Get-Content C:\PS\sbros_parolya_spisok_users.txt | Set-ADAccountPassword -NewPassword $newPass -Reset
Как из PowerShell изменить пароль локального пользователя Windows?
Для сброса паролей на локальные учтенные записи в Windows можно использовать API ADSI (Active Directory Services Interface), который может применяться как для работы с Active Directory, так и с отдельно стоящими компьютерами.
Откройте командную строку PowerShell и выведите список всех локальных пользователей компьютера:
get-wmiobject win32_useraccount
Также вы можете вывести список локальных пользователей так:
[adsi]$localPC = "WinNT://."
$localPC.Children | where {$_.Class -eq "user"} | ft name, description –auto
Чтобы сбросить пароль локального пользователя, выберите пользователя (например, учетка root):
[adsi]$user = "WinNT://./root,user"
Установите его пароль:
$user.SetPassword("et0sloshn!yP@r0l")
Дополнительно можете потребовать от пользователя самому сменить пароль при следующем входе в систему:
Задаем смену пароля при следующем входе:
$user.Put("PasswordExpired",1)
Осталось сохранить изменения в учетной записи пользователя:
$user.SetInfo()
Эти же команды можно использовать для смены пароля пользователя на удаленных компьютерах. Достаточно заменить [adsi]$user = ″WinNT://./root,user″
на команду вида [adsi]$user = ″WinNT://msk-BuhPC21/local_user_name,user″
Чтобы задать одинаковый пароль для всех локальных пользователей, используйте следующий скрипт:
$NewPass = "NoviyP@r0l"
$localusers = Get-WmiObject -Class Win32_UserAccount -ComputerName $env:COMPUTERNAME -Filter LocalAccount='true' | select -ExpandProperty name
foreach ($user in $localusers)
{
$user
([adsi]"WinNT://$env:COMPUTERNAME/$user").SetPassword("$NewPassW0rd")
}