Desbloquear Geração Aleatória de Senhas com PowerShell

É importante manter senhas longas e não facilmente adivinháveis. Você pode saber como criar uma senha segura, mas não seria legal ter um pequeno script para fazer isso por você? Sorte a sua, se estiver no Windows, você pode criar um gerador de senhas aleatórias com o PowerShell que irá gerar diferentes comprimentos e complexidades!

Em vez de construir seu próprio gerador de senhas aleatórias, use um método existente que a Microsoft já fornece chamado GeneratePassword(). Este método faz parte da classe System.Web.Security.Membership e fará tudo o que você precisa.

Construindo o Script

Para construir este script simples, você primeiro precisará tornar a montagem System.Web disponível. A classe System.Web.Security.Membership faz parte desta montagem e não está disponível por padrão.

Add-Type -AssemblyName 'System.Web'

Assim que a montagem System.Web estiver disponível, agora você pode invocar o método GeneratePassword().

O método GeneratePassword() tem dois argumentos: length e numberOfNonAlphanumericCharacters. Usar esses dois argumentos permite que você crie todos os tipos de senhas aleatórias com o PowerShell.

  • Comprimento – Este é o comprimento dos caracteres que a senha terá.
  • numberOfNonAlphanumericCharacters – Este é o número de caracteres não alfanuméricos que o método irá gerar. Pense em caracteres como @,%,&, etc.

Primeiro, defina o comprimento da senha que você gostaria de ter. O exemplo abaixo está configurando uma variável de 10 que você passará para o método.

$length = 10

Em seguida, defina o número de caracteres não alfanuméricos que você gostaria de incluir na senha. O trecho de código abaixo define uma variável 5 que você fornecerá ao método para garantir que cinco caracteres não alfabéticos estejam na senha.

$nonAlphaChars = 5

Em seguida, é quando você irá chamar o método GeneratePassword() passando os valores de ambas as variáveis definidas acima.

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

Ao executar o trecho de código acima, o PowerShell retornará uma combinação aleatória de caracteres em uma string que você pode então usar onde desejar.

Construindo Comprimento Aleatório de Senha

Você pode até ficar um pouco mais aleatório e tornar os comprimentos das senhas também aleatórios. Use o cmdlet Get-Random para obter um número inteiro aleatório que você pode então usar como o argumento length gerando uma senha de comprimento aleatório também!

$minLength = 5 ## caracteres
$maxLength = 10 ## caracteres
$length = Get-Random -Minimum $minLength -Maximum $maxLength
$nonAlphaChars = 5
$password = [System.Web.Security.Membership]::GeneratePassword($length, $nonAlphaChars)

Se você for usar esta senha no PowerShell, muitos componentes requerem uma string segura. Depois de ter a senha como uma string de texto simples, você pode então convertê-la em uma string segura usando o cmdlet ConvertTo-SecureString.

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

Construindo uma Função do PowerShell

Finalmente, leve este gerador de senhas aleatórias para o próximo nível criando uma função que você pode usar onde quiser sem ter que lembrar todas as sintaxes explicadas acima.

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
    }
}

Assim que você adicionar esta função ao seu perfil, talvez um módulo PowerShell ou simplesmente copiando/colando-a em sua sessão atual, você poderá executá-la facilmente.

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

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