Eingabe in PowerShell mit Read-Host
Eine Benutzer-Eingabe in PowerShell kann man mit dem Cmdlet Read-Host umsetzen. Diesen Iput kann man dann weiter verarbeiten mit einer IF-Abfrage oder auch mit Switch. Auch die Eingabe eines Passworts ist mit PowerShell möglich.
Eine Benutzer-Eingabe mit Read-Host in PowerShell
Viel kann in PowerShell schon mit den normalen Commandlets abgedeckt werden. Doch es gibt Fälle, in denen man eine Eingabe des Benutzers benötigt. Beispiel hierfür ist ein Auswahl-Menü in PowerShell.
Eine einfache Eingabe in PowerShell ist mit dem Cmdlet Read-Host möglich:
$alter = Read-Host "Bitte geben Sie Ihr Alter an"
Sobald nun der Benutzer etwas in die PowerShell Konsole eingegeben hat und mit ENTER bestätigt, wird der Input in die Variable $alter
geschrieben und kann somit weiter Verarbeitet werden.
Passwort eingeben
Auch die Eingabe eines Passworts ist in PowerShell kein Problem. Natürlich möchte man nicht, dass das Kennwort in Klartext zu sehen ist. Deswegen gibt es für Read-Host den Parameter -AsSecureString. Der Vorteil dieses Parameters ist, dass der Input als Sternchen (*) angezeigt wird und für Benutzer nicht lesbar ist.
$geheim = Read-Host "Bitte geben Sie Ihr Kennwort ein" -AsSecureString
Somit kann ein Kennwort eingegeben werden, aber ist von niemandem sichtbar. Auch wenn man die Variable ausgeben lässt, wird lediglich System.Security.SecureString ausgegeben.
Read-Host Eingabe mit Switch oder IF verwenden
Natürlich macht es wenig Sinn, den Eingegebenen Text oder Zahl einfach wieder ausgeben zu lassen. Die meisten Anwendungsgebiete von Read-Host sind das weitere Verwenden mit einer IF-Abfrage oder sogar mit Switch. Eine IF-Abfrage in Kombination mit Read-Host könnte so aussehen:
$yourServer = Read-Host -Prompt 'Server Name' if ($yourServer) { Write-Host "Vielen Dank für den Server-Namen $yourServer." } else { Write-Warning -Message "Kein Name angegeben." }
Hier wird geprüft, ob die Benutzereingabe leer ist, oder nicht. Wenn erfolgreich Text eingegeben wurde, kann die Verarbeitung weitergehen. Wenn der Inhalt leer ist, so wird eine Warnung ausgegeben.
Noch interessanter ist wohl die Verwendung von Switch, da man mehr Optionen hat eine Eingabe zu verarbeiten. Hier können mehrere Optionen hinterlegt werden, je nach dem was der User eingegeben hat.
$auswahl = Read-Host "Bitte Option wählen" 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} }
Somit ist es praktisch, aber auch extrem einfach einen User-Input in einem PowerShell Script zu verwenden. Denn Read-Host ist einfach zu verwenden und die Eingabe von Zahlen, Buchstaben, Sonderzeichen und sogar Passwörtern ist somit ein Kinderspiel.