Собственно, вот код скрипта.
Write-Host("Программа для генерации паролей. Версия 0.1")
$Complexity = Read-Host ″Пароль со спецсимволами?″
if ($Complexity -eq "1"){
$NonAlfaNumeric = Read-Host ″Количество нестандартных символов″
}
$PassLength = Read-Host ″Длина пароля (1-128)″
$PassNumber = Read-Host ″Количество паролей″
if ($Complexity -eq "1"){
Add-Type -AssemblyName System.Web
1..$PassNumber | ForEach-Object -process {
[System.Web.Security.Membership]::GeneratePassword($PassLength,$NonAlfaNumeric)
}
}else{
1..$PassNumber | ForEach-Object -process {
$PassResult = -join (1..$PassLength | % { [char[]]'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' | Get-Random })
$PassResult
}
}
Pause
Написан он практически на коленке, некоторые части я позаимствовал из других примеров. Но свою задачу скрипт выполняет.
Вкратце поясню, как он работает. Первым делом мы выбираем сложность пароля: спецсимволы не всегда разрешены в полях для ввода, поэтому добавим возможность отказаться от них. Ну и заодно спросим об их количестве — чем их больше, тем более стойким будет пароль, но тем сложнее его будет набирать вручную. Далее запрашиваем общую длину пароля и количество паролей, которое мы хотим получить на выходе.
Затем идет генерация пароля согласно выбранным параметрам. В случае паролей со спецсимволами используется встроенный командлет PowerShell под названием GeneratePassword. Во втором случае пароль генерируется из массива заранее заданных символов.
Подобный скрипт ты можешь использовать как отдельно, так и в составе более сложных сценариев. К примеру, если тебе понадобится создать сотню пользователей Active Directory, то ты сможешь вызывать его как функцию.