2

Auswahl-Menü in PowerShell Script erstellen

Je nach Anwendungsfall können PowerShell Scripte sehr groß werden und daher ist ein Auswahl-Menü sehr passend. Eine Auswahl der Funktionen ist vor allem dann sinnvoll, wenn der Anwender selbst entscheiden soll, welcher Teil des Scripts ausgeführt werden soll. Wie man ein eigenes Menü erstellen kann zeigen wir euch anhand eines Beispiels.

Wozu ein Menü erstellen im PS Script?

Bei komplexen Aufgaben in einem PowerShell Script, kann oft nicht alles gleichzeitig ausgeführt werden. Deshalb hilft oft ein Menü, in dem der Benutzer selbst entscheiden kann, was erledigt werden soll. Die Auswahl der passenden Option erfolgt in einem selbst erstellten Auswahlmenü, welches sehr klein, oder auch sehr groß sein kann.

Auswahl-Menü in PowerShell erstellen

PowerShell hat leider keine fertige Methode um ein Menü erstellen zu lassen. Abhilfe schafft hier switch, mit dem man je nach Eingabe des Users einen bestimmten Code ausführen lassen kann.

Als erstes ist es sinnvoll eine Funktion zu erstellen, um das erstellte Menü in PowerShell anzeigen zu lassen. Ebenfalls wird ein Parameter übergeben, welcher den Titel angeben lässt. Natürlich kann man den Titel auch statisch vergeben.

function Show-CustomMenu
{
    param (
        [string]$menuname = 'Mein eigenes Menü'
    )

    Clear-Host
    Write-Host "================ $menuname ================"
    
    Write-Host "1: Wähle '1' für Option 1"
    Write-Host "2: Wähle '2' für Option 2"
    Write-Host "3: Wähle '3' für Option 3"
    Write-Host "4: Wähle '4' für Option 4"
    Write-Host "Q: Wähle 'Q' um das Programm zu beenden."
    Write-Host ""
    Write-host ""
}

# Menue aufrufen und Titel uebergeben
Show-CustomMenu –menuname 'Mein erstes Menü'

Ein erster Aufruf des Menüs zeigt auch schon ein schönes Ergebnis:

PowerShell Menü erstellen

Die Menü-Eingabe des Benutzers abfangen

Natürlich ist es bisher ein Menü, welches noch keine Benutzer-Eingabe abfangen kann. Unter PowerShell hilft aber das Cmdlet Read-Host um die Eingabe eines Benutzers zu erlauben. Das Ergebnis der Auswahl lassen wir in eine Variable speichern:

$auswahl = Read-Host "Bitte die gewünschte Option wählen"

Nachdem der Benutzer im Menü seine gewünschte Option gewählt hat, steht nun die Eingabe in der Variable $auswahl. Nun kommt in PowerShell switch ins Spiel. Mit switch() ist es möglich je nach Inhalt einen anderen Code ausführen zu lassen:

switch ($auswahl){
     '1' {'Sie haben Option 1 gewählt.'}
     '2' {'Dein bestimmter Code 2'}
     '3' {'Option Nummer 3 gewählt.'}
     '3' {'Oder doch Nummer 4?!'}
     'q' {exit}
 }

Setzt man diesen Code nun zusammen, so erhält man in PowerShell schon ein fertiges Auswahl-Menü, welches bereits voll funktionsfähig ist. So einfach ist es mit dem Switch-Methode eine funktionierende Auswahl zu erstellen.

Auswahl-Menü in PowerShell

Das fertige Auswahl-Menü

Das Optionsmenü wäre nun schon fertig und einsatzbereit. Manchmal möchte man aber, dass das Menü wieder erscheint, sobald man mit einer gewählten Option fertig ist. So muss das PowerShell Script nicht erneut gestartet werden. Abhilfe schafft hier eine Schleife mit do-until(). Hier könnte man das Menü so oft aufrufen, bis eine bestimmte Option gewählt wurde.

do{

   .....code.....

 }
 until ($auswahl -eq 'q')

Das fertige Script für ein PowerShell Menü ist haben wir noch einmal für euch zusammengefasst. Natürlich müssen die einzelnen Optionen durch richtigen Code oder weitere Funktionen ersetzt werden:

function Show-CustomMenu
{
    param (
        [string]$menuname = 'Mein eigenes Menü'
    )

    Clear-Host
    Write-Host "================ $menuname ================"
    
    Write-Host "1: Wähle '1' für Option 1"
    Write-Host "2: Wähle '2' für Option 2"
    Write-Host "3: Wähle '3' für Option 3"
    Write-Host "4: Wähle '4' für Option 4"
    Write-Host "Q: Wähle 'Q' um das Programm zu beenden."
    Write-Host ""
    Write-host ""
}


# Menue aufrufen und Titel uebergeben
Show-CustomMenu –menuname 'Mein erstes Menü'

# Eingabe /Auswahl des Benutzers
$auswahl = Read-Host "Bitte die gewünschte Option wählen"

# Optionen wählen
switch ($auswahl){
     '1' {'Sie haben Option 1 gewählt.'}
     '2' {'Dein bestimmter Code 2'}
     '3' {'Option Nummer 3 gewählt.'}
     '4' {'Oder doch Nummer 4?!'}
     'q' {exit}
 }
Johannes Huber
 

In seiner Freizeit macht Johannes nichts lieber, als für ITnator Beiträge zu schreiben. Input bekommt er hierfür von Problemen in der IT Administration von Servern, Clients und vielen weiteren IT Komponenten.

  • florian sagt:

    Salü Johannes

    Eine Frage: Ich habe dies ähnlich realisiert, suche jetzt jedoch nach der Möglichkeit, die Eingabe ohne [enter] vollziehen zu können.

    Also wenn jemand option 1 wählt, indem er “1” drückt, soll es gleich weiter gehen.

    Aber irgendwie finde ich da leider nichts.

    Kannst Du mir sagen wie sowas zu machen ist?

  • sidebar
    >