Generieren Sie zufällige Zeichenfolgen mit PowerShell

  1. Generiere zufällige Strings mit Get-Random
  2. Generieren Sie zufällige Passwörter mit der Funktion GeneratePassword()
Generieren Sie zufällige Zeichenfolgen mit PowerShell

Normalerweise haben wir bei der Verwaltung des Active Directory möglicherweise die Aufgabe, Massenbenutzer zu importieren und ihnen ein temporäres Passwort zuzuweisen. Wenn wir jedoch das Passwort für jeden Benutzer eindeutig festlegen müssen, wird die Aufgabe mühsam, es sei denn, wir erstellen ein Skript zum Generieren einer zufälligen Zeichenfolge.

Daher wird in diesem Artikel erläutert, wie Sie zufällige Zeichenfolgen generieren, die wir mit PowerShell für Passwörter verwenden können.

Generiere zufällige Strings mit Get-Random

In PowerShell gibt es einen nativen Befehl namens Get-Random. Das Cmdlet Get-Random erhält ein zufällig ausgewähltes Zeichen oder eine Zahl.

Wenn wir eine Sammlung von Objekten an Get-Random senden, erhält es ein oder mehrere zufällig ausgewählte Objekte aus der Gruppe.

Beim Erstellen von Passwörtern können wir das Cmdlet Get-Random viermal mit jeweils einem anderen input-Parameter (Sonderzeichen, Zahlen, Gross- und Kleinbuchstaben) aufrufen, die Ergebnisstrings verketten und mit einem weiteren Get-Random aufrufen.

Beispielcode:

$TokenSet = @{
        U = [Char[]]'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
        L = [Char[]]'abcdefghijklmnopqrstuvwxyz'
        N = [Char[]]'0123456789'
        S = [Char[]]'!"#$%&''()*+,-./:;<=>?@[\]^_`{|}~'
    }

$Upper = Get-Random -Count 5 -InputObject $TokenSet.U
$Lower = Get-Random -Count 5 -InputObject $TokenSet.L
$Number = Get-Random -Count 5 -InputObject $TokenSet.N
$Special = Get-Random -Count 5 -InputObject $TokenSet.S

$StringSet = $Upper + $Lower + $Number + $Special

(Get-Random -Count 15 -InputObject $StringSet) -join ''

Ausgang:

9ZimEXDW*@xo?12

Die obige Ausgabe sollte jedes Mal eine andere Zeichenfolge erzeugen. Wie wir jedoch im vorherigen Snippet sehen können, erfordert es mehrere Verwendungen des Cmdlets, wodurch der Skriptblock länger und die Verarbeitungszeit in Millisekunden langsamer wird.

Im nächsten Abschnitt des Artikels wird erläutert, wie wir alle die oben genannten Funktionen in ein paar Zeilen Code ausführen können.

Generieren Sie zufällige Passwörter mit der Funktion GeneratePassword()

Wir können die Verwendung von GeneratePassword() aus [System.Web.Security] in Betracht ziehen, wenn wir nur Zeichenfolgen erstellen sollen, die für Passwörter verwendet werden. Bevor wir die Funktion verwenden können, müssen wir zuerst die Bibliothek System.Web laden, indem wir den folgenden Code verwenden:

[Reflection.Assembly]::LoadWithPartialName("System.Web")

Nach dem Laden können wir die Funktion GeneratePassword() ausführen, um zufällig ein Passwort zu generieren.

Beispielcode:

[System.Web.Security.Membership]::GeneratePassword(15,2)

Ausgang:

QQjj*LJ:e=YZ)Fo

Wie wir aus dem Code-Snippet oben sehen können, akzeptiert die Funktion GeneratePassword() zwei Argumente:

  1. Das erste Argument akzeptiert einen ganzzahligen Wert, der die Anzahl der insgesamt für das Passwort erforderlichen Zeichen darstellt.
  2. Das zweite Argument akzeptiert einen ganzzahligen Wert, der die Anzahl der Sonderzeichen für das Passwort darstellt.

Dieser Code garantiert jedoch nicht, dass das generierte Passwort mindestens ein numerisches Zeichen enthält. Um sicherzustellen, dass es mindestens ein numerisches Zeichen enthält, führen Sie das folgende Snippet unten aus.

Beispielcode:

do {
   $pwd = [System.Web.Security.Membership]::GeneratePassword(15,2)
} until ($pwd -match '\d')

$pwd

Ausgang:

Y4UkK4)G+lannRd
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

Verwandter Artikel - PowerShell String