Změňte uživatelské heslo v AD z PowerShell

V tomto článku se podíváme na to, jak změnit (resetovat) heslo jednoho nebo několika uživatelů služby Active Directory z příkazového řádku PowerShell pomocí cmdlet Set-ADAccountPassword.

Většina správců je zvyklá na změnu (resetování) uživatelských hesel v AD prostřednictvím grafického modulu snap-in dsa.msc (Active Directory Users & Computers - ADUC). Chcete-li to provést, najděte uživatelský účet ve službě AD, klikněte na něj pravým tlačítkem a vyberte příkaz „Obnovit heslo“. Je to jednoduchý a přímý způsob..

Nebudete však moci používat konzolu ADUC, když budete muset resetovat heslo najednou mnoha uživatelům, použijte proceduru resetování hesla jako jednu z akcí skriptu. V takovém případě můžete resetovat hesla v AD z příkazového řádku PowerShell..

Obsah:

  • Jak resetovat uživatelské heslo v AD?
  • Změňte heslo více uživatelů v AD

Jak resetovat uživatelské heslo v AD?

Chcete-li obnovit uživatelské heslo ve službě AD, použijte rutinu cmdlet Set-ADAccountPassword, součástí modulu Active Directory pro Windows PowerShell (ve stolních verzích Windows je součástí RSAT a v edicích serverů je nainstalován jako samostatná součást Snap-Ins a nástrojů příkazového řádku služby AD DS). Před použitím modulu jej musíte importovat do relace PowerShell:

Importovací modul ActiveDirectory

Chcete-li obnovit heslo, musí mít váš účet příslušná práva. Obyčejně běžní uživatelé AD nemohou ve výchozím nastavení resetovat heslo jiných účtů, aby se tato funkce mohla zobrazit, musí být uživateli (skupině uživatelů) delegováno právo resetovat heslo v kontejneru AD nebo jej přidat do skupiny domén Account Operators..

Chcete-li ověřit, zda má váš účet právo resetovat heslo konkrétního uživatele, otevřete jeho vlastnosti, přejděte na kartu Zabezpečení -> Upřesnit -> Efektivní přístup -> zadejte název účtu -> ujistěte se, že máte povolení k obnovení hesla.

Chcete-li obnovit heslo uživatele pomocí účtu dakimov a nastavit nové heslo SuperStr0n @ p1, spusťte příkaz:

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

Chcete-li uživatelům automaticky generovat složitá hesla, můžete použít metodu GeneratePassword popsanou v článku „Generování náhodných hesel pomocí PowerShell“.

Ve výchozím cmdlet vrací objekt a nezobrazuje na konzole nic. Pro zobrazení informací o uživatelském objektu v AD používáme parametr -Passthru.

Jako uživatelské jméno můžete zadat sAMAccountName (jako v našem případě), objectGUID, SID uživatele nebo jeho DN (rozlišovací jméno, například CN = Akimov, OU-Users, DC = winitpro, DC = ru).

Pokud nezadáte parametr při změně hesla uživatele -Resetovat, musíte zadat staré a nové heslo k účtu.

Poznámka:. Pokud při resetování hesla pomocí rutiny Set-ADAccountPassword dojde k chybě:

Set-ADAccountPassword: Heslo nesplňuje požadavky na délku, složitost nebo historii domény.

To znamená, že na zadané heslo se vztahují určité požadavky na složitost, délku atd. Definované v zásadách hesel domény nebo zásadách podrobných hesel platných pro účet..

Pokud jste povolili historii příkazů PowerShell a nechcete, aby se hesla zobrazovala v čistém textu v konzole PoSh, musíte převést heslo na bezpečnou linii stejně jako při vytváření uživatele (více o ochraně heslem v skriptech PowerShell zde):

$ NewPasswd = Read-Host "Zadejte nové uživatelské heslo" -AsSecureString

Nyní resetujte heslo:

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

Při resetování hesla můžete vynutit uzamčení akademického záznamu, i když je uzamčeno (způsob, jak zjistit, ze kterého počítače je účet uzamčen, viz článek Hledání zdroje zámku uživatele ve službě Active Directory):

Odemkněte-ADAccount -Identity dakimov

Aby uživatel mohl toto heslo změnit při příštím přihlášení do domény na nové, spusťte příkaz:

Set-ADUser -Identity dakimov -ChangePasswordAtLogon $ true

Příkaz pro změnu hesla můžete kombinovat s požadavkem na změnu hesla (atribut userAccountControl) na jednom řádku:

Set-ADAccountPassword dakimov -NewPassword $ NewPasswd -Reset -PassThru | Set-ADuser -ZměnitPasswordAtLogon $ True

Pomocí rutiny Get-ADUser můžete ověřit, že heslo bylo úspěšně resetováno zobrazením času, kdy byl účet naposledy změněn:

Get-ADUser dakimov -Properties * | vyberte jméno, předejte *

Při obnovení hesla je v řadiči domény (DC) zaznamenána událost EventID 4724. Tato událost pomáhá identifikovat účet, který provedl resetování hesla uživatele..

Změňte heslo více uživatelů v AD

Výše jsme ukázali, jak resetovat heslo jednoho uživatele v AD z PowerShell. Nyní zvažte další scénář - pokud potřebujete změnit hesla několika uživatelů najednou.

Nejjednodušší případ je, že musíte resetovat hesla všech uživatelů s určitými vlastnostmi účtu. Například musíte vynutit všechny zaměstnance obchodního oddělení, aby resetovali heslo na stejné a vynutit je, aby se změnili při příštím přihlášení:

get-aduser -filter "department -eq 'Sales Dept' -AND enabled -eq 'True'" | Set-ADAccountPassword -NewPassword $ NewPasswd -Reset -PassThru | Set-ADuser -ZměnitPasswordAtLogon $ True

Zvažte jiný případ. Předpokládejme, že máte soubor CSV / Excel, který obsahuje seznam uživatelů, kteří potřebují resetovat hesla a jedinečné heslo pro každého uživatele. Formát souboru Users.csv:

sAMAccountName; NewPassword
aivanov; PaSSde0r1
bpetrov; Nové $ isde01
ssidorov; k @ nndj! 223

Pomocí následujícího skriptu PowerShell můžete resetovat heslo pro každý účet v souboru:

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

Po spuštění tohoto kódu bude pro všechny uživatele v souboru nastaveno nové jedinečné heslo..