Промяна на паролата на потребителя в AD от PowerShell

В тази статия ще разгледаме как да промените (нулирате) паролата на един или няколко потребители на Active Directory от командния ред PowerShell, използвайки командлета Set-ADAccountPassword.

Повечето администратори са свикнали да променят (нулират) потребителските пароли в AD чрез графичното прихващане на dsa.msc (Потребители и компютри на Active Directory - ADUC). За целта намерете потребителския акаунт в AD, щракнете с десния бутон върху него и изберете "Нулиране на паролата". Това е прост и лесен начин..

Но няма да можете да използвате конзолата ADUC, когато трябва да нулирате паролата наведнъж на много потребители, използвайте процедурата за нулиране на паролата като едно от действията на скрипта. В този случай можете да нулирате паролите в AD от командния ред PowerShell..

Съдържание:

  • Как да нулирате паролата на потребителя в AD?
  • Промяна на паролата на множество потребители в AD

Как да нулирате паролата на потребителя в AD?

За да нулирате паролата на потребителя в AD, използвайте командлета Set-ADAccountPassword, включен в модула Active Directory за Windows PowerShell (в настолните версии на Windows той е част от RSAT, а в сървърните издания е инсталиран като отделен компонент на AD DS Snap-Ins и Command-Line Tools). Преди да използвате модула, трябва да го импортирате в сесия на PowerShell:

Импорт-модул ActiveDirectory

За да нулирате паролата си, вашият акаунт трябва да има съответните права. Естествено, обикновените потребители на AD не могат да зададат отново паролата на други акаунти по подразбиране, за да се появи тази функция, потребителят (групата потребители) трябва да бъде делегиран правото да нулира паролата в контейнера AD или да я добави към групата домейни на операторите на акаунти..

За да проверите дали вашият акаунт има право да нулира паролата на конкретен потребител, отворете неговите свойства, отидете на раздела Защита -> Разширени -> Ефективен достъп -> посочете името на вашия акаунт -> уверете се, че имате разрешение за нулиране на паролата.

За да нулирате паролата за потребителя с дакимов акаунт и да зададете нова парола SuperStr0n @ p1, изпълнете командата:

Set-ADAccountPassword dakimov -Reset -NewPassword (ConvertTo-SecureString -AsPlainText „SuperStr0n @ p1“ -Force -Verbose) -PassThru

За да генерирате автоматично сложни пароли за потребителите, можете да използвате метода GeneratePassword, описан в статията „Генериране на произволни пароли с помощта на PowerShell“.

По подразбиране командлетът връща обект и не показва нищо в конзолата. За да покажем информация за потребителския обект в AD, използваме параметъра -PassThru.

Като потребителско име можете да посочите sAMAccountName (както в нашия случай), objectGUID, SID на потребителя или неговото DN (Разграничено име, например CN = Акимов, OU-потребители, DC = winitpro, DC = ru).

Ако не посочите параметъра при промяна на потребителската парола -Reset, трябва да посочите старата и новата парола за акаунта.

забележка. Ако възникне грешка при нулиране на паролата с помощта на командлета Set-ADAccountPassword:

Set-ADAccountPassword: Паролата не отговаря на дължината, сложността или историята на изискването на домейна.

Това означава, че определени изисквания за сложност, дължина и др., Дефинирани в политиката за парола на домейна или подробна политика за паролата, приложими към акаунта, се прилагат към посочената парола..

Ако сте активирали историята на командите на PowerShell и не искате паролите да се показват в чистия текст на PoSh конзолата, трябва да преобразувате паролата в сигурна линия, точно както при създаването на потребителя (повече за защитата на паролата в PowerShell скриптове тук):

$ NewPasswd = Read-Host "Въведете нова потребителска парола" -AsSecureString

Сега нулирайте паролата:

Set-ADAccountPassword dakimov -Reset -NewPassword $ NewPasswd -PassThru

Когато нулирате паролата, можете да принудите заключването на академичния запис, дори и да е заключен (за това как да намерите от кой компютър е заключен акаунта, вижте статията Търсене на източника на заключване на потребителя в Active Directory):

Отключване-ADAccount -Идентичност dakimov

За да може потребителят да промени тази парола на нова следващия път, когато влезе в домейна, изпълнете командата:

Set-ADUser -Identity dakimov -ChangePasswordAtLogon $ true

Можете да комбинирате командата за промяна на паролата и изискването за промяна на паролата (атрибут userAccountControl) в един ред:

Set-ADAccountPassword дакимов -NewPassword $ NewPasswd -Reset -PassThru | Set-ADuser -ChangePasswordAtLogon $ True

Използвайки командлета Get-ADUser, можете да проверите дали паролата е била нулирана успешно, като показва времето, за което сметката е била последно променена:

Вземете-ADUser dakimov -Properties * | изберете име, преминете *

Когато паролата е нулирана, събитието EventID 4724 се влиза в контролера на домейна (DC) Това събитие помага да се идентифицира акаунтът, извършил нулиране на паролата на потребителя..

Промяна на паролата на множество потребители в AD

По-горе показахме как да нулираме паролата на един потребител в AD от PowerShell. Сега помислете за друг сценарий - когато трябва да промените паролите на няколко потребители наведнъж.

Най-простият случай е, че трябва да нулирате паролите на всички потребители с определени свойства на акаунта. Например, трябва да принудите всички служители на отдел „Продажби“ да нулират паролата до същата и да ги принудите да бъдат променени следващия път, когато влязат:

get-aduser -filter "отдел -eq" Отдел Продажби "-and активиран -eq" True "" | Set-ADAccountPassword -NewPassword $ NewPasswd -Reset -PassThru | Set-ADuser -ChangePasswordAtLogon $ True

Помислете за друг случай. Да предположим, че имате CSV / Excel файл, който съдържа списък на потребителите, които трябва да нулират паролите и уникална парола за всеки потребител. Формат на файла Users.csv:

sAMAccountName; NewPassword
aivanov; PaSSde0r1
bpetrov; Нов $ isde01
ssidorov; k @ nndj! 223

Използвайки следния скрипт PowerShell, можете да нулирате паролата за всеки акаунт във файла:

Import-Csv users.csv -Delimiter ";" | Foreach
$ NewPass = ConvertTo-SecureString -AsPlainText $ _. NewPassword -Force
Set-ADAccountPassword -Identity $ _. SAMAccountName -NewPassword $ NewPass -Reset -PassThru | Set-ADUser -ChangePasswordAtLogon $ false

След като се изпълни този код, ще бъде зададена нова уникална парола за всички потребители във файла..