Generování náhodných hesel pomocí PowerShell

Při vytváření uživatelských účtů ve službě Active Directory správce obvykle nastavuje jedinečné počáteční heslo pro každý účet, které je pak sděleno uživateli (obvykle při prvním přihlášení uživatele musí toto heslo změnit pomocí možnosti „Uživatel musí změnit heslo při příštím přihlášení“ atributu AD userAccountControl). Protože nechcete pro uživatele pokaždé vymýšlet nové náhodné heslo, nebo používáte skript PowerShell k vytvoření uživatelských účtů v AD, můžete automatizovat generování jedinečných uživatelských hesel pomocí PowerShell.

Chcete-li vygenerovat heslo, můžete použít tuto metodu GeneratePassword ze třídy .Net System.Web.Security.Membership. Generujeme složité heslo pomocí příkazů:

Add-Type -AssemblyName System.Web
[System.Web.Security.Membership] :: GeneratePassword (10.2)

Metoda GeneratePassword umožňuje vygenerovat heslo až 128 znaků. Metoda bere jako vstup dva parametry - délku hesla (v mém případě 10 znaky) a minimální počet nealfanumerických speciálních znaků, jako jsou !, -, $, &, @, #,% atd. (2 speciální znak). Jak vidíte, v mém případě bylo vygenerováno heslo tm-qZl! uQv podle daných argumentů.

Je nežádoucí používat v hesle více než jeden nebo dva speciální znaky, jinak takové heslo zadejte _ ! $. R% 2 * [ uživatel bude nerealistický.

Proto při vytváření nových uživatelů pomocí rutiny PowerShell může být New-ADUser s jedinečným heslem použit s následujícími příkazy:

Add-Type -AssemblyName System.Web
New-ADUser - Jméno "Anton Semenov" -GivenName "Semenov" - Jméno "Anton" -SamAccountName "asemenov" -UserPrincipalName "[email protected]" -Path "OU = Users, OU = MSK, DC = winitpro, DC = cz "-AccountPassword ([System.Web.Security.Membership] :: GeneratePassword (10,2)) -Povoleno $ true

Metodu GeneratePassword můžete použít také při resetování hesla uživatelů služby Active Directory..

Pokud vaše organizace používá přísné zásady týkající se hesel, nemusí heslo vygenerované metodou GeneratePassword v některých případech splňovat požadavky zásad hesel vaší domény. Před přiřazením hesla uživateli můžete ověřit, zda splňuje zásady složitosti hesla. Přirozeně to nemá smysl kontrolovat délku a nepřítomnost uživatelského přihlášení v hesle. Můžete si ověřit, že složitost hesla splňuje alespoň 3 požadavky zásad. Heslo musí splňovat požadavky na složitost (heslo musí obsahovat 3 typy znaků ze seznamu: čísla, malá písmena, velká písmena a speciální znaky). Pokud heslo neprošlo ověřením, musíte jej znovu vygenerovat.

Dostal jsem takovou funkci PowerShell, která generuje nové heslo a kontroluje shodu s požadavky na složitost:

Funkce Generate-Complex-Domain-Password ([Parameter (Povinný = $ true)] [int] $ PassLenght)

Add-Type -AssemblyName System.Web
$ requirementsPassed = $ false
dělat
$ newPassword = [System.Web.Security.Membership] :: GeneratePassword ($ PassLenght, 1)
Pokud (($ newPassword - cmatch "[A-Z \ p Lu \ s]") '
-a ($ newPassword - cmatch "[a-z \ p Ll \ s]") '
-a ($ newPassword -match "[\ d]") '
-a ($ newPassword -match "[^ \ w]")
)

$ requirementsPassed = $ True

Zatímco ($ požadavkyPassed -eq $ false)
vrátit $ newPassword

Chcete-li vygenerovat čtyřmístné heslo s alespoň jedním zvláštním znakem, spusťte příkaz:

Generovat-složité-doménové-heslo (4)

Tento skript vždy vytvoří heslo, které odpovídá kritériím složitosti domény..