Entsperren Sie die zufällige Passwortgenerierung mit PowerShell

Es ist wichtig, Passwörter lang und nicht leicht zu erraten zu halten. Sie wissen vielleicht, wie man ein sicheres Passwort erstellt, aber wäre es nicht schön, ein kleines Skript zu haben, das dies für Sie erledigt? Glücklicherweise können Sie, wenn Sie Windows verwenden, einen zufälligen Passwortgenerator mit PowerShell erstellen, der verschiedene Längen und Komplexitäten generiert!

Anstatt Ihren eigenen zufälligen Passwortgenerator zu erstellen, verwenden Sie einfach eine vorhandene Methode, die Microsoft bereits bereitstellt, genannt die GeneratePassword() .NET Methode. Diese Methode gehört zur System.Web.Security.Membership Klasse und erledigt alles, was Sie benötigen.

Erstellung des Skripts

Um dieses einfache Skript zu erstellen, müssen Sie zunächst die System.Web Assembly verfügbar machen. Die System.Web.Security.Membership Klasse gehört zu dieser Assembly und ist standardmäßig nicht verfügbar.

Add-Type -AssemblyName 'System.Web'

Sobald die System.Web Assembly verfügbar ist, können Sie nun die GeneratePassword() Methode aufrufen.

Die GeneratePassword() Methode hat zwei Argumente; Länge und AnzahlDerNichtAlphanumerischenZeichen. Durch die Verwendung dieser beiden Argumente können Sie mit PowerShell alle Arten von zufälligen Passwörtern erstellen.

  • Länge – Dies ist die Länge der Zeichen, die das Passwort haben wird.
  • AnzahlDerNichtAlphanumerischenZeichen – Dies ist die Anzahl der nicht-alphanumerischen Zeichen, die die Methode generieren wird. Denken Sie an Zeichen wie @,%,&, etc.

Zuerst definieren Sie die Länge des Passworts, das Sie haben möchten. Das folgende Beispiel setzt eine Variable von 10, die Sie an die Methode übergeben werden.

$length = 10

Als nächstes legen Sie die Anzahl der nicht-alphanumerischen Zeichen fest, die Sie im Passwort enthalten möchten. Der folgende Code-Ausschnitt setzt eine Variable 5, die Sie der Methode übergeben, um sicherzustellen, dass fünf nicht-alfa-Zeichen im Passwort enthalten sind.

$nonAlphaChars = 5

Als Nächstes rufen Sie die Methode GeneratePassword() auf und übergeben die Werte beider oben definierten Variablen.

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

Wenn Sie den obigen Code-Ausschnitt ausführen, gibt PowerShell eine zufällige Mischung von Zeichen in einem String zurück, den Sie dann verwenden können, wo immer Sie möchten.

Generieren einer zufälligen Passwortlänge

Sie können sogar noch etwas zufälliger werden und die Passwortlängen ebenfalls zufällig machen. Verwenden Sie das Cmdlet Get-Random, um eine zufällige Ganzzahl zu generieren, die Sie dann als Argument für die Länge verwenden können, um auch eine zufällige Passwortlänge zu generieren!

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

Wenn Sie dieses Passwort in PowerShell verwenden möchten, benötigen viele Komponenten eine sichere Zeichenfolge. Sobald Sie das Passwort als Klartext-String haben, können Sie es dann mit dem Cmdlet ConvertTo-SecureString in eine sichere Zeichenfolge umwandeln.

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

Erstellen einer PowerShell-Funktion

Zum Schluss bringen Sie diesen zufälligen Passwortgenerator auf die nächste Stufe, indem Sie eine Funktion erstellen, die Sie überall verwenden können, ohne sich an alle oben erklärten Syntaxe erinnern zu müssen.

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

Sobald Sie diese Funktion zu Ihrem Profil hinzugefügt haben, möglicherweise als PowerShell-Modul oder einfach durch Kopieren/Einfügen in Ihre aktuelle Sitzung, können Sie sie problemlos ausführen.

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

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