Sbloccare la generazione casuale di password con PowerShell

È importante mantenere le password lunghe e non facilmente indovinabili. Potresti sapere come creare una password sicura, ma non sarebbe bello avere uno script che lo faccia per te? Fortunatamente, se sei su Windows, puoi creare un generatore di password casuali con PowerShell che genererà varie lunghezze e complessità!

Invece di creare il tuo generatore di password casuali, usa invece un metodo esistente che Microsoft fornisce chiamato GeneratePassword() .NET. Questo metodo fa parte della classe System.Web.Security.Membership e farà tutto ciò di cui hai bisogno.

Creazione dello script

Per creare questo semplice script, dovrai prima rendere disponibile l’assembly System.Web. La classe System.Web.Security.Membership fa parte di questo assembly e non è disponibile di default.

Add-Type -AssemblyName 'System.Web'

Una volta che l’assembly System.Web è disponibile, puoi invocare il metodo GeneratePassword().

Il metodo GeneratePassword() ha due argomenti; length e numberOfNonAlphanumericCharacters. Utilizzando questi due argomenti puoi creare vari tipi di password casuali con PowerShell.

  • Lunghezza – Questa è la lunghezza dei caratteri della password.
  • numberOfNonAlphanumericCharacters – Questo è il numero di caratteri non alfanumerici che il metodo genererà. Pensate a caratteri come @,%,&, ecc.

Prima di tutto, definisci la lunghezza della password che desideri avere. Nell’esempio seguente viene impostata una variabile di 10 che passerai al metodo.

$length = 10

Successivamente, definisci il numero di caratteri non alfanumerici che desideri includere nella password. Lo snippet di codice seguente imposta una variabile di 5 che fornirai al metodo per garantire che ci siano cinque caratteri non alfa nella password.

$nonAlphaChars = 5

In seguito, chiamerai il metodo GeneratePassword() passando i valori di entrambe le variabili definite in precedenza.

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

Quando esegui lo snippet di codice sopra, PowerShell restituirà una serie casuale di caratteri in una stringa che potrai utilizzare ovunque desideri.

Creazione di una lunghezza di password casuale

Puoi rendere ancora più casuale la lunghezza della password. Utilizza il cmdlet Get-Random per generare un numero intero casuale che potrai utilizzare come argomento length per generare una password di lunghezza casuale!

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

Se utilizzi questa password in PowerShell, molti componenti richiedono una stringa sicura. Una volta ottenuta la password come stringa di testo normale, puoi convertirla in una stringa sicura utilizzando il cmdlet ConvertTo-SecureString.

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

Creazione di una funzione di PowerShell

Infine, porta questo generatore di password casuali al livello successivo creando una funzione che puoi utilizzare ovunque senza dover ricordare tutte le sintassi spiegate in precedenza.

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

Una volta che hai aggiunto questa funzione al tuo profilo, magari come modulo PowerShell o semplicemente copiandola/incollandola nella sessione corrente, puoi eseguirla facilmente.

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

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