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:
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.
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} }