Generieren Sie zufällige Zeichenfolgen mit PowerShell
-
Generiere zufällige Strings mit
Get-Random
-
Generieren Sie zufällige Passwörter mit der Funktion
GeneratePassword()
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:
- Das erste Argument akzeptiert einen ganzzahligen Wert, der die Anzahl der insgesamt für das Passwort erforderlichen Zeichen darstellt.
- 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 specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedInVerwandter Artikel - PowerShell String
- Überprüfen Sie, ob ein String in PowerShell nicht NULL oder LEER ist
- Überprüfen Sie, ob eine Zeichenfolge in PowerShell leer ist
- Auswählen mehrerer Muster in einer Zeichenfolge mithilfe von PowerShell
- Entfernen Sie Leerzeichen aus einer Variablen mit PowerShell
- Ersetzen von Zeichenfolgen in PowerShell
- Extrahieren einer Teilzeichenfolge in PowerShell