Wie man mit PowerShell zufällige Zeichenfolgen generiert

  1. Verwenden Sie das Cmdlet Get-Random, um zufällige Zeichenfolgen in PowerShell zu generieren
  2. Verwenden Sie die Funktion GeneratePassword(), um zufällige Passwörter in PowerShell zu generieren
  3. Verwenden Sie das Cmdlet New-Guid, um zufällige Zeichenfolgen in PowerShell zu generieren
  4. Verwenden Sie das Cmdlet Get-Random mit Zeichensätzen, um zufällige Zeichenfolgen in PowerShell zu generieren
  5. Fazit
Wie man mit PowerShell zufällige Zeichenfolgen generiert

Bei der Verwaltung von Active Directory können Aufgaben wie das Importieren von Massennutzern mit einzigartigen temporären Passwörtern herausfordernd sein. Glücklicherweise bietet PowerShell effektive Lösungen zur Generierung von zufälligen Zeichenfolgen, um diese Aufgaben zu vereinfachen.

In diesem Artikel werden wir erkunden, wie man dies mit verschiedenen Methoden in PowerShell erreicht.

Verwenden Sie das Cmdlet Get-Random, um zufällige Zeichenfolgen in PowerShell zu generieren

PowerShell bietet einen nativen Befehl namens Get-Random, der zufällige Zeichen oder Zahlen auswählt. Wenn wir ein Array von Elementen an den Befehl Get-Random übergeben, wählt er eines oder mehrere Objekte aus dieser Sammlung zufällig aus.

Beim Erstellen von Passwörtern können wir das Cmdlet Get-Random viermal mit verschiedenen input-Parametern (Sonderzeichen, Zahlen, Großbuchstaben und Kleinbuchstaben) aufrufen, die Ergebnisstrings verketten und sie mit einem weiteren Aufruf von Get-Random mischen.

Im folgenden Beispiel definieren wir eine Hash-Tabelle namens $TokenSet, um Zeichensätze für Großbuchstaben(U), Kleinbuchstaben(L), Zahlen(N) und Sonderzeichen(S) zu speichern. Diese Zeile Code $variablename = Get-Random -Count 5 -InputObject $TokenSet.U erzeugt eine zufällige Auswahl von 5 Zeichen aus den Zeichensätzen(U, L, N, S) und speichert sie in einer Variablen($Upper, $Lower, $Number, $Special).

Dann kombinieren wir die zufällig ausgewählten Zeichen aus jedem Satz zu einem einzigen Zeichensatz namens $StringSet. Schließlich generieren wir eine zufällige Zeichenfolge aus 15 Zeichen, indem wir aus dem $StringSet auswählen und sie dann zusammenfügen, um das endgültige Passwort zu bilden.

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

Ausgabe:

9ZimEXDW*@xo?12

Der obige Code generiert jedes Mal eine andere Zeichenfolge. Allerdings beinhaltet er mehrere Aufrufe des Cmdlets Get-Random, was das Skript länger und in Bezug auf die Verarbeitungszeit langsamer machen kann.

Der nächste Abschnitt behandelt, wie dieselbe Funktionalität mit nur wenigen Zeilen Code erreicht werden kann.

Verwenden Sie die Funktion GeneratePassword(), um zufällige Passwörter in PowerShell zu generieren

Wenn Sie passwortspezifische Zeichenfolgen erstellen müssen, können Sie die Funktion GeneratePassword() aus dem [System.Web.Security]-Namespace verwenden. Um diese Funktion zu nutzen, müssen Sie zuerst die System.Web-Bibliothek laden.

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

Sobald sie geladen ist, können wir die Funktion GeneratePassword() ausführen, um ein Passwort zufällig zu generieren.

Im folgenden Code verwenden wir den [System.Web.Security.Membership]-Namespace, um auf die Funktion GeneratePassword() zuzugreifen.

Beispielcode:

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

Ausgabe:

QQjj*LJ:e=YZ)Fo

Wie wir im obigen Beispielcode sehen können, akzeptiert die Funktion GeneratePassword() zwei Argumente:

  1. Das erste Argument nimmt einen ganzzahligen Wert an, der die Anzahl der insgesamt benötigten Zeichen für das Passwort darstellt.

  2. Das zweite Argument nimmt einen ganzzahligen Wert an, der die Anzahl der Sonderzeichen für das Passwort darstellt.

Dieser Code garantiert jedoch nicht die Anwesenheit von mindestens einem Zahlenzeichen im Passwort. Um sicherzustellen, dass mindestens ein Zahlenzeichen vorhanden ist, können Sie den folgenden Code verwenden.

Beispielcode:

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

$pwd

Zuerst erstellen wir eine Schleife mit dem do-Schlüsselwort, um ein Passwort zu generieren und sicherzustellen, dass es mindestens ein Zahlenzeichen enthält. Dann generieren wir ein zufälliges Passwort mit 15 Zeichen, einschließlich 2 Sonderzeichen, mit dieser Zeile Code [System.Web.Security.Membership]::GeneratePassword(15, 2) und speichern es in der Variablen $pwd.

Die Schleife wiederholt sich, bis das generierte Passwort mindestens ein Zahlenzeichen enthält.

Ausgabe:

Y4UkK4)G+lannRd

In nur wenigen Zeilen Code erzeugt die obige Ausgabe jedes Mal eine andere Zeichenfolge und stellt sicher, dass mindestens ein Zahlenzeichen in der generierten Zeichenfolge vorhanden ist.

Verwenden Sie das Cmdlet New-Guid, um zufällige Zeichenfolgen in PowerShell zu generieren

PowerShell bietet das Cmdlet New-Guid, um zufällige GUIDs (Globally Unique Identifiers) zu generieren. Sie können diese GUIDs als zufällige Zeichenfolgen für verschiedene Zwecke, einschließlich Passwörter, verwenden.

Im folgenden Beispiel generieren wir eine zufällige GUID (Globally Unique Identifier) mit [System.Guid]::NewGuid(), konvertieren dann die generierte GUID in eine Zeichenfolgendarstellung und speichern sie in der Variablen $randomString.

Beispielcode:

$randomString = [System.Guid]::NewGuid().ToString()

$randomString

Ausgabe:

de5881dc-a546-43da-9b89-0bae712406b1

Die Ausgabe wird eine zufällige Zeichenfolge generieren.

Verwenden Sie das Cmdlet Get-Random mit Zeichensätzen, um zufällige Zeichenfolgen in PowerShell zu generieren

Sie können auch zufällige Zeichenfolgen generieren, indem Sie benutzerdefinierte Zeichensätze definieren und das Cmdlet Get-Random verwenden. Diese Methode ermöglicht mehr Kontrolle über den verwendeten Zeichensatz für die zufälligen Zeichenfolgen.

Hier ist ein Beispiel.

Beispielcode:

$length = 10

$characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'.ToCharArray()
$randomString = -join ($characters | Get-Random -Count $length)

$randomString

Zuerst definieren wir die gewünschte Länge der zufälligen Zeichenfolge und speichern sie in einer Variablen $length.

Dann definieren wir die Zeichen($characters), aus denen die zufällige Zeichenfolge als Array von Zeichen generiert wird. Die Methode .ToCharArray() konvertiert die Zeichenfolge in ein Array ihrer einzelnen Zeichen.

Als nächstes erstellen wir eine Zeichenfolge ($randomString) der angegebenen Länge, indem wir zufällig Zeichen aus dem Zeichenarray auswählen, und die ausgewählten Zeichen werden zusammengefügt, um die endgültige zufällige Zeichenfolge zu bilden. Schließlich geben wir die generierte zufällige Zeichenfolge aus.

Ausgabe:

9lQSruF40i

Die Ausgabe wird eine zufällige Zeichenfolge erzeugen, indem sie die Zeichen im $characters auswählt.

Fazit

Dieser Artikel stattet Sie mit einer Reihe von Methoden aus, um zufällige Zeichenfolgen in PowerShell zu generieren, sodass Sie das richtige Werkzeug für die Verwaltung einzigartiger Passwörter und anderer Aufgaben in Active Directory haben.

Genießen Sie unsere Tutorials? Abonnieren Sie DelftStack auf YouTube, um uns bei der Erstellung weiterer hochwertiger Videoanleitungen zu unterstützen. Abonnieren
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