PowerShell 7: Mehrere Zufallszahlen erzeugen

Der Dotnet-Doktor  –  136 Kommentare

Seit PowerShell 7.0 kann man bei Get-Random mit -count anfordern, dass mehr als eine Zufallszahl geliefert wird. So erzeugt man schnell die Lottozahlen oder ein Zufallskennwort.

Zum Erzeugen von Zufallszahlen gibt es in der PowerShell (seit Version 2.0) das Commandlet Get-Random. Als Beispiel eine Zufallszahlen zwischen 1 und 49:

Get-Random -Minimum 1 -Maximum 49 

Seit PowerShell 7.0 kann man auch mit -count anfordern, dass mehr als eine Zufallszahl geliefert wird. So zieht man die Lottozahlen (6 aus 49 plus Zusatzzahl) für das nächste Wochenende:

Get-Random -Minimum 1 -Maximum 49 -count 7

Zuvor musste man dafür eine Schleife bilden:

for($i=0;$i -lt 7;$i++) { Get-Random -Minimum 1 -Maximum 49 } 

Falls die selbst gezogenen Lottozahlen Sie nicht zum Multimillionär machen und Sie daher in der IT weiterarbeiten müssen, hilft Ihnen vielleicht die folgende Befehlszeile, die ein komplexes Zufallskennwort mit Groß- und Kleinbuchstaben, Zahlen sowie Sonderzeichen (ASCII-Werte 33 (!) bis 126 (~)) mit einer Länge von 10 und 20 Zeichen erzeugt. Die Zahl wird damit mit dem Typkonvertierungsausdruck [char] in ein ASCII-Zeichen verwandelt. Join-String fügt am Ende der Pipeline die einzelnen Zeichen zu einer Zeichenkette zusammen:

Get-Random -Minimum 33 -Maximum 126 -count (Get-Random -Minimum 10 -Maximum 20) | Foreach-Object { [char]$_ } | Join-String

Für alle, die noch nicht PowerShell 7 verwenden, hier auch ein Zufallskennwortgenerator, der in PowerShell 2.0 bis 6.2 läuft:

Function New-Password([int] $Anzahl)
{
$kennwort = ""
$zufallszahlgenerator = New-Object System.Random
for($i=0;$i -lt $Anzahl;$i++) { $kennwort = $kennwort +[char]$zufallszahlgenerator.next(33,126) }
return $kennwort
}

New-Password 15