Generovanie náhodných hesiel pomocou PowerShell

Pri vytváraní používateľských účtov v službe Active Directory správca zvyčajne nastavuje každý účet s jedinečným počiatočným heslom, ktoré je potom pridelené používateľovi (zvyčajne pri prvom prihlásení sa musí toto heslo zmeniť pomocou atribútu „Užívateľ musí zmeniť heslo pri najbližšom prihlásení“ atribútu AD userAccountControl). pretože nechcete pre používateľov vymýšľať nové náhodné heslo zakaždým, alebo pomocou skriptu PowerShell vytvoríte užívateľské účty v službe AD, môžete automatizovať generovanie jedinečných hesiel používateľov pomocou služby PowerShell.

Na vygenerovanie hesla môžete použiť túto metódu GeneratePassword z triedy .Net System.Web.Security.Membership. Generujeme zložité heslo pomocou príkazov:

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

Metóda GeneratePassword umožňuje vygenerovanie hesla až 128 znakov. Metóda berie ako vstup dva parametre - dĺžku hesla (v mojom prípade 10 znakov) a minimálny počet nealfanumerických špeciálnych znakov, ako sú napríklad !, -, $, &, @, #,% atď. (2 špeciálny znak). Ako vidíte, v mojom prípade bolo vygenerované heslo tm-qZl! uQv podľa daných argumentov.

Je nežiaduce používať v hesle viac ako jeden alebo dva špeciálne znaky, inak takéto heslo napíšte _ ! $. R% 2 * [ používateľ bude nereálny.

Preto pri vytváraní nových používateľov pomocou rutiny PowerShell môže byť New-ADUser s jedinečným heslom použitý s nasledujúcimi príkazmi:

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

Metódu GeneratePassword môžete použiť aj pri resetovaní hesla používateľov služby Active Directory..

Ak vaša organizácia používa silné pravidlá pre heslá, heslo vygenerované metódou GeneratePassword nemusí v niektorých prípadoch spĺňať požiadavky politiky pre heslá domén. Predtým, ako priradíte používateľovi heslo, môžete si overiť, či je v súlade s pravidlami zložitosti hesla. Prirodzene, nemá zmysel kontrolovať jeho dĺžku a absenciu prihlasovacieho mena používateľa v hesle. Môžete si overiť, či zložitosť hesla spĺňa aspoň 3 požiadavky politiky. Heslo musí spĺňať požiadavky na zložitosť (heslo musí obsahovať 3 typy znakov zo zoznamu: čísla, malé písmená, veľké písmená a špeciálne znaky). Ak heslo neprešlo overením, musíte ho znova vygenerovať.

Dostal som takú funkciu PowerShell, ktorá generuje nové heslo a kontroluje súlad s požiadavkami na zložitosť:

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

Add-Type -AssemblyName System.Web
$ requirementsPassed = $ false
robiť
$ newPassword = [System.Web.Security.Membership] :: GeneratePassword ($ PassLenght, 1)
Ak (($ 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

Zatiaľ čo ($ requirementsPassed -eq $ false)
návrat $ newPassword

Ak chcete vygenerovať štvormiestne heslo s aspoň jedným špeciálnym znakom, spustite príkaz:

Generovať-komplexné-doménové heslo (4)

Tento skript vždy vytvorí heslo, ktoré zodpovedá kritériám zložitosti domény..