Generowanie losowych haseł za pomocą PowerShell

Podczas tworzenia kont użytkowników w usłudze Active Directory administrator zwykle ustawia unikalne hasło początkowe dla każdego konta, które jest następnie przekazywane użytkownikowi (zwykle przy pierwszym logowaniu użytkownik musi zmienić to hasło za pomocą opcji „Użytkownik musi zmienić hasło przy następnym logowaniu” atrybutu AD userAccountControl). Ponieważ nie chcesz wymyślać nowego losowego hasła dla użytkowników za każdym razem lub używasz skryptu PowerShell do tworzenia kont użytkowników w AD, możesz zautomatyzować generowanie unikalnych haseł użytkowników za pomocą PowerShell.

Aby wygenerować hasło, możesz użyć metody Wygeneruj hasło z klasy .Net System.Web.Security.Membership. Generujemy złożone hasło za pomocą poleceń:

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

Metoda GeneratePassword pozwala wygenerować hasło o długości do 128 znaków. Metoda przyjmuje dwa parametry jako dane wejściowe - długość hasła (w moim przypadku 10 znaków) i minimalną liczbę niealfanumerycznych znaków specjalnych, takich jak !, -, $, &, @, #,% itp. (2) znak specjalny). Jak widać, w moim przypadku wygenerowano hasło tm-qZl! uQv zgodnie z podanymi argumentami.

Niepotrzebne jest użycie więcej niż jednego lub dwóch znaków specjalnych w haśle, w przeciwnym razie wpisz takie hasło _ ! $. R% 2 * [ użytkownik będzie nierealny.

Dlatego podczas tworzenia nowych użytkowników za pomocą polecenia cmdlet programu PowerShell narzędzie New-ADUser z unikalnym hasłem może być używane z następującymi poleceniami:

Add-Type -AssemblyName System.Web
Nowy ADUser -Nazwa „Anton Semenow” -GivenName „Semenov”-Nazwisko „Anton” -SamAccountName „asemenov” -UserPrincipalName „[email protected]” -Path „OU = Użytkownicy, OU = MSK, DC = winitpro, DC = com "-AccountPassword ([System.Web.Security.Membership] :: GeneratePassword (10,2)) -Enabled $ true

Możesz również użyć metody GeneratePassword podczas resetowania hasła użytkowników Active Directory..

Jeśli Twoja organizacja stosuje silne zasady haseł, w niektórych przypadkach hasło wygenerowane przez metodę GeneratePassword może nie spełniać wymagań Twojej zasady haseł domeny. Przed przypisaniem hasła do użytkownika możesz sprawdzić, czy jest ono zgodne z zasadami złożoności haseł. Oczywiście nie ma sensu sprawdzanie długości i braku loginu użytkownika w haśle. Możesz sprawdzić, czy złożoność hasła spełnia co najmniej 3 wymagania zasad. Hasło musi spełniać wymagania dotyczące złożoności (hasło musi zawierać 3 typy znaków z listy: cyfry, małe litery, wielkie litery i znaki specjalne). Jeśli hasło nie przeszło weryfikacji, musisz je ponownie wygenerować.

Mam taką funkcję programu PowerShell, która generuje nowe hasło i sprawdza zgodność z wymaganiami dotyczącymi złożoności:

Funkcja Wygeneruj złożone hasło do domeny ([parametr (obowiązkowe = $ prawda)] [int] $ PassLenght)

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

$ wymaganiaPassed = $ True

Chociaż ($ wymaganiaPassed -eq $ false)
return $ newPassword

Aby wygenerować 4-znakowe hasło z co najmniej jednym znakiem specjalnym, uruchom polecenie:

Wygeneruj złożone hasło do domeny (4)

Ten skrypt zawsze generuje hasło, które odpowiada kryteriom złożoności domeny..