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

É importante manter as senhas longas e não facilmente adivinháveis. Talvez você saiba como criar uma senha segura, mas não seria bom ter um pequeno script para fazer isso por você? Sorte para você, se estiver usando o Windows, você pode construir um gerador de senhas aleatórias com o PowerShell que gerará várias 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() .NET. 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. Usando esses dois argumentos, você pode criar 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 gerará. Pense em caracteres como @,%,&, etc.

Primeiro, defina o comprimento da senha que você deseja 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ê chamará o método GeneratePassword() passando os valores de ambas as variáveis definidas acima.

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

Quando você executar o trecho de código acima, o PowerShell retornará uma variedade aleatória de caracteres em uma string que você poderá usar onde desejar.

Construindo o Comprimento Aleatório da 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 gerar um número inteiro aleatório que você poderá então usar como argumento length gerando assim uma senha de comprimento aleatório!

$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ê estiver usando essa senha no PowerShell, muitos componentes exigem uma string segura. Depois de ter a senha como uma string de texto simples, você pode convertê-la em uma string segura usando o cmdlet ConvertTo-SecureString.

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

Construindo uma Função 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
    }
}

Depois de adicionar esta função ao seu perfil, um módulo do PowerShell talvez ou simplesmente copiando/colando-o em sua sessão atual, você pode executá-lo facilmente.

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

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