PowerShell 7: Mehrere Zufallszahlen erzeugen
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
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
Copyright © 2020 Heise Medien