angle-left

Генерация случайных паролей с помощью PowerShell

Периодически случается, что нужно придумать достаточно надежный пароль, отвечающий каким-либо требованиям, да еще и периодически(например при работе соответствующими политиками GPO)

Придумывать самому или пользоваться специальной утилитой бывает утомительно, поэтому на помощь приходит метод GeneratePassword  из PowerShell.

GeneratePassword принадлежит к классу System.Web.Security.Membership , поэтому предварительно возможно придется загрузить его:

[Reflection.Assembly]::LoadWithPartialName("System.Web") 

Затем генерируем сам пароль, задав нужные значения(первое число - число знаков пароля, второе - минимальное число спецсимволов в нем):

 

[System.Web.Security.Membership]::GeneratePassword(6,2)

В данном случае полуичтся пароль длиной 6 символов и содержащий минимум 2 спецсимвола.

Можно пойти далее, и задать необходимые требования к паролю, определяющие его надежность.

Function Generate-Complex-Password ([Parameter(Mandatory=$true)][int]$PassLenght)
{
Add-Type -AssemblyName System.Web
$requirementsPassed = $false
do {
$newPassword=[System.Web.Security.Membership]::GeneratePassword($PassLenght,1)
If ( ($newPassword -cmatch "[A-Z\p{Lu}\s]") `
-and ($newPassword -cmatch "[PARAMETER1") `
-and ($newPassword -match "[PARAMETER2") `
)
{
$requirementsPassed=$True
}
} While ($requirementsPassed -eq $false)
return $newPassword
}

Здесь 1 - минимальное число специмволов, и PARAMETER1,2 - задаваемые вручную параметры сложности(влючение или невключение каких-то символов и тп, например чтобы исключить частичное совпадение с предыдущими паролями).

После генерации функции Generate-Complex-Password , можно просто выполнить ее с параметром [длина пароля] и получить один или несколько паролей.

Generate-Complex--Password (6)

Результатом выполнения этой функции будет пароль из 6 символов, соответствующий заданным в функции критериям.

Вперед

Коротко о себе:

Работаю инженером в компании Tune IT.