Разблокировать случайную генерацию паролей с помощью PowerShell

Важно использовать длинные пароли, которые не легко угадать. Возможно, вы знаете, как создать безопасный пароль, но не хотите ли вы иметь небольшой сценарий, который сделает это за вас? Если вы используете Windows, у вас есть возможность создать генератор случайных паролей с помощью PowerShell, который будет генерировать пароли различной длины и сложности!

Вместо того, чтобы создавать свой собственный генератор случайных паролей, вы можете использовать уже существующий метод, предоставляемый Microsoft, называемый GeneratePassword() .NET. Этот метод входит в класс System.Web.Security.Membership и делает все необходимое.

Создание сценария

Для создания этого простого сценария вам сначала нужно сделать сборку System.Web доступной. Класс System.Web.Security.Membership является частью этой сборки и по умолчанию не доступен.

Add-Type -AssemblyName 'System.Web'

После того, как сборка System.Web станет доступной, вы можете вызвать метод GeneratePassword().

Метод GeneratePassword() имеет два аргумента: length и numberOfNonAlphanumericCharacters. Используя эти два аргумента, вы можете создавать различные случайные пароли с помощью PowerShell.

  • Length – это длина пароля.
  • numberOfNonAlphanumericCharacters – это количество неалфавитно-цифровых символов, которые будут сгенерированы методом. Например, символы @,%,& и т.д.

Сначала определите длину пароля, которую хотели бы иметь. Нижеприведенный пример задает переменную 10, которую вы передадите методу.

$length = 10

Затем определите количество неалфавитных символов, которые вы хотите включить в пароль. Нижеприведенный фрагмент кода задает переменную 5, которую вы предоставите методу, чтобы убедиться, что в пароле есть пять неалфавитных символов.

$nonAlphaChars = 5

Затем вы вызовете метод GeneratePassword(), передав значения обоих вышеопределенных переменных.

[System.Web.Security.Membership]::GeneratePassword($length, $nonAlphaChars)

При выполнении приведенного выше фрагмента кода PowerShell вернет случайный набор символов в виде строки, которую вы затем можете использовать по вашему усмотрению.

Создание случайной длины пароля

Вы даже можете сделать длины паролей случайными. Используйте команду Get-Random, чтобы получить случайное целое число, которое вы затем можете использовать в качестве аргумента length для генерации случайной длины пароля!

$minLength = 5 ## символов
$maxLength = 10 ## символов
$length = Get-Random -Minimum $minLength -Maximum $maxLength
$nonAlphaChars = 5
$password = [System.Web.Security.Membership]::GeneratePassword($length, $nonAlphaChars)

Если вы собираетесь использовать этот пароль в PowerShell, многие компоненты требуют безопасную строку. Как только у вас будет пароль в виде обычной строки, вы можете преобразовать его в безопасную строку с помощью командлета ConvertTo-SecureString.

$secPw = ConvertTo-SecureString -String $password -AsPlainText -Force

Создание функции PowerShell

Наконец, возьмите этот генератор случайных паролей на следующий уровень, создав функцию, которую вы можете использовать везде, не запоминая все объясненные выше синтаксические конструкции.

function New-RandomPassword {
    param(
        [Parameter()]
        [int]$MinimumPasswordLength = 5,
        [Parameter()]
        [int]$MaximumPasswordLength = 10,
        [Parameter()]
        [int]$NumberOfAlphaNumericCharacters = 5,
        [Parameter()]
        [switch]$ConvertToSecureString
    )
    
    Add-Type -AssemblyName 'System.Web'
    $length = Get-Random -Minimum $MinimumPasswordLength -Maximum $MaximumPasswordLength
    $password = [System.Web.Security.Membership]::GeneratePassword($length,$NumberOfAlphaNumericCharacters)
    if ($ConvertToSecureString.IsPresent) {
        ConvertTo-SecureString -String $password -AsPlainText -Force
    } else {
        $password
    }
}

Как только вы добавите эту функцию в свой профиль, возможно, модуль PowerShell, или просто скопируете/вставите ее в текущую сессию, вы сможете легко ее выполнить.

New-RandomPassword -MinimumPasswordLength 10 -MaximumPasswordLength 15 -NumberOfAlphaNumericCharacters 6 -ConvertToSecureString

Source:
https://adamtheautomator.com/random-password-generator/