zurück zum Artikel

PowerShell 7: Mehrere Zufallszahlen erzeugen

Dr. Holger Schwichtenberg

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.

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 [1] (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 [2] 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
PowerShell 7.0: Mehrere Zufallszahlen erzeugen

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
( [3])

URL dieses Artikels:
https://www.heise.de/-4713241

Links in diesem Artikel:
[1] https://dotnet-lexikon.de/PowerShell/lex/4308.aspx
[2] https://de.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange
[3] mailto:hs@ix.de