Генериране на произволни пароли с PowerShell

При създаване на потребителски акаунти в Active Directory, администраторът обикновено задава уникална първоначална парола за всеки акаунт, която след това се съобщава на потребителя (обикновено за първи път, когато потребителят влезе, трябва да промени тази парола, като използва опцията „Потребителят трябва да промени паролата при следващо влизане“ на атрибута AD userAccountControl). защото не искате всеки път да измисляте нова случайна парола за потребителите или използвате скрипта PowerShell за създаване на потребителски акаунти в AD, можете да автоматизирате генерирането на уникални потребителски пароли с помощта на PowerShell.

За да генерирате парола, можете да използвате метода GeneratePassword от класа .Net на System.Web.Security.Membership. Генерираме сложна парола с командите:

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

Методът GeneratePassword позволява генериране на парола с дължина до 128 знака. Методът приема два параметъра като вход - дължината на паролата (в моя случай 10 символи) и минималният брой не-буквено-цифрови специални символи, като !, -, $, &, @, #,% и т.н. (2 специален характер). Както можете да видите, в моя случай беше генерирана парола tm-qZl! uQv според дадените аргументи.

Нежелателно е да използвате повече от един или два специални знака в паролата, в противен случай въведете такава парола _ ! $. R% 2 * [ потребителят ще бъде нереалистичен.

Следователно, когато създавате нови потребители с помощта на командлета PowerShell, New-ADUser с уникална парола може да се използва със следните команди:

Add-Type -AssemblyName System.Web
New-ADUser -Name "Антон Семенов" -GivenName "Semenov" -Името "Anton" -SamAccountName "asemenov" -UserPrincipalName "[email protected]" -Path "OU = Потребители, OU = MSK, DC = winitpro, DC = com "-AccountPassword ([System.Web.Security.Membership] :: GeneratePassword (10,2)) -Enabled $ true

Можете също да използвате метода GeneratePassword, когато нулирате паролата на потребителите на Active Directory..

Ако вашата организация използва силни правила за пароли, в някои случаи паролата, генерирана чрез метода GeneratePassword, може да не отговаря на изискванията на вашата политика за парола за домейн. Преди да зададете парола на потребител, можете да проверите дали тя отговаря на правилата за сложност на паролата. Естествено, няма смисъл да го проверявате за дължина и липса на потребителско вход в паролата. Можете да проверите дали сложността на паролата отговаря на поне 3 изисквания на политиката. Паролата трябва да отговаря на изискванията за сложност (паролата трябва да съдържа 3 типа знаци от списъка: числа, малки букви, главни и специални знаци). Ако паролата не е преминала проверка, трябва да я генерирате отново.

Получих такава функция PowerShell, която генерира нова парола и проверява за съответствие с изискванията за сложност:

Функция Генериране-Комплексна-Домейн-Парола ([Параметър (Задължителен = $ true)] [int] $ PassLenght)

Add-Type -AssemblyName System.Web
$ изискванияPassed = $ false
направете
$ newPassword = [System.Web.Security.Membership] :: GeneratePassword ($ PassLenght, 1)
Ако (($ newPassword -cmatch "[A-Z \ p Lu \ s]") "
-и ($ newPassword -cmatch "[a-z \ p Ll \ s]") '
-и ($ newPassword -match "[\ d]") '
-и ($ newPassword -match "[^ \ w]")
)

$ изискванияPassed = $ True

Докато ($ изискванияPassed -eq $ false)
върнете $ newPassword

За да генерирате 4-знакова парола с поне един специален символ, изпълнете командата:

Генериране-комплекс-домейн-парола (4)

Този скрипт винаги ще произвежда парола, която отговаря на критериите за сложност на домейна..