Die Windows Powershell kann dazu verwendet werden, per Zufall einen Wert aus einer Reihe von Werten auszuwählen. Dieser Zufallsgenerator kann in bestehende Powershell Skripte integriert werden oder, wie in meinem Fall, der zufälligen Auswahl von Namen einer Liste dienen.

Mit Get-Random einen Zufallszahlengenerator erstellen

Das benötigte Powershell Cmdlet nennt sich „Get-Random„. Dieser Funktion werden Werte per Parameter mitgegeben, aus denen ein zufälliger Wert ermittelt werden soll. So würde der nachfolgende Code eine Zufallszahl aus dem Bereich 1 – 10 ausgeben:

Get-Random (1..10)

Der Parameter in den Klammern gibt den Minimal- und den Maximalwert an. Werden die Parameter nicht angegeben, wird Powershell eine Zufallszahl zwischen 0 und 2147483647 (Int32.MaxValue) auswählen.

Zufallszahlen aus einer Variablen ermitteln

Auch das zufällige Ermitteln einer Zahl aus Variablen ist möglich. Sind mehrere Zahlen in einem Array gespeichert, braucht man der Funktion nur die Variable mitgeben. Hier entfallen Maximal- und Minimalwert, da ausschließlich Werte aus dem Array ausgewählt werden:

$zahlenbereich = @(10,20,30,40,50)
Get-Random $zahlenbereich

Mehrere Zufallszahlen generieren

Der Parameter „count“ ermöglicht die Ermittlung mehrerer Zufallszahlen aus dem vorgegebenen Bereich. Das könnte zum Beispiel dafür genutzt werden, die Lottozahlen zu tippen. Der folgende Befehl wählt 6 zufällige Zahlen aus dem Bereich 1 bis 49:

Get-Random (1..49) -Count 6
Zufallsgenerator mit der Powershell
Zufällige Lottozahlen per Powershell ermittelt.

Auswahl von Namen per Zufallsprinzip – Anwendungsbeispiel

Wie Eingangs erwähnt, möchte ich ein Skript erstellen, welches mir einen zufälligen Namen ausgibt, der zuvor gemeinsam mit anderen Namen eingeben wurde. Das Ganze ist eine kleine Spielerei, zeigt aber, wie sich der Zufallsgenerator einbauen lässt.

Die Namen trage ich in dem Windows Powershell Skript per do-while Schleife in ein Array ein (Zeile 4-13). Anschließend wird per Get-Random ein Name per Zufallsgenerator ermittelt (Zeile 16) und in eine Variable gespeichert. Danach wird der Screen geleert, die eingegebenen Namen nochmal aufgeführt und ein Countdown von 5 abwärts ausgeführt. Danach wird der zufällig ausgewählte Name angezeigt.

Powershell Zufallsgenerator - Eingabe der Werte in ein Array
Eingabe der Namen für den Zufallsgenerator.
Zufallsgenerator mit der Powershell erstellen
Der Powershell Zufallsgenerator ermittelt einen „Gewinner“ und gibt den Namen nach einem Countdown aus.
# Ausgabefenster leeren
Clear-Host

# Erstellen einer leeren Liste für die Namen
$names = @()

# Schleife für die Eingabe der Namen
do {
    $name = Read-Host "Gib einen Namen ein (oder drücke Enter, um fortzufahren):"
    if ($name) {
        $names += $name
    }
} while ($name)

# Zufällige Auswahl eines Namens aus der Liste
$selectedName = Get-Random $names

# Ausgabe der Liste der eingegebenen Namen
Clear-Host
Write-Host "Folgende Namen wurden eingegeben: `r`n $names"

Write-Host "`r`n"

# Countdown von 5 abwärts
for($i=5; $i -ge 1; $i--){
    Write-Host "Der ausgewählte Name wird in $i Sekunden angezeigt..."
    Start-Sleep -Seconds 1
}

# Ausgabe des ausgewählten Namens
Write-Host ""
Write-Host "Der ausgewählte Name ist: $selectedName"
Write-Host ""

Ebenfalls interessant: