Auswahl-MenĂ¼ in PowerShell Script erstellen

Written By Johannes Huber  |  PowerShell  |  4 Comments

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}
 }
  • 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?

  • Hallo!
    Ich fange gerade mit PowerShell an – das MenĂ¼ funktioniert auch…allerdings ist mir nicht ganz klar an welcher stelle dieser Code kommt:

    do{

    …..code…..

    }
    until ($auswahl -eq ‘q’)

    …ein Beispiel wäre hier toll!

    • Hallo Jan, die do-until Schleife ist dafĂ¼r da, um das MenĂ¼ nochmals anzeigen zu lassen, bis irgendwann das MenĂ¼ mit “q” beendet wird.
      Beispiel:


      do {
      # Menue aufrufen und Titel uebergeben
      Show-CustomMenu –menuname 'MenĂ¼'

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

      # Optionen wählen
      switch ($auswahl) {
      '1' { Pre-Start; Fill-PDF("true") }
      '2' { Pre-Start; Fill-PDF("false") }
      'q' { exit }
      'Q' { exit }
      }

      }
      until ($auswahl -eq 'q')

  • {"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}
    >