Powershell Eingabe überprüfen so lange bis diese zutrifft
Hi,
bin dabei ein Powershellskript zu schreiben. Das funktioniert auch soweit ganz gut nur wollte ich das Skript etwas verfeinern.
Mein Problem:
das funktioniert auch gut, nur wenn ich mich vertippe dann läuft nix. Aus diesem Grund würde ich gerne die Eingabe Kontrollieren/Vergleichen. habe das mit einer While schleife versucht
Kann mir jemand einen Tipp geben. Im Internet recherchiere ich nun schon Stunden. Wahrscheinlich suche ich nach den Flaschen Parametern oder ich verstehe es nicht. Sorry ist mit Sicherheit kein großes ding.
danke
bin dabei ein Powershellskript zu schreiben. Das funktioniert auch soweit ganz gut nur wollte ich das Skript etwas verfeinern.
Mein Problem:
$Variable = Read-Host -Prompt "blau oder grün"
das funktioniert auch gut, nur wenn ich mich vertippe dann läuft nix. Aus diesem Grund würde ich gerne die Eingabe Kontrollieren/Vergleichen. habe das mit einer While schleife versucht
while(($Variable = Read-Host -Prompt "blau oder grün")
{
switch($Variable)
{
blau {"perfekt"; break}
grün {"gut"; break}
default {"falsche Eingabe"}
}
}
weiter mit dem Skript
Kann mir jemand einen Tipp geben. Im Internet recherchiere ich nun schon Stunden. Wahrscheinlich suche ich nach den Flaschen Parametern oder ich verstehe es nicht. Sorry ist mit Sicherheit kein großes ding.
danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 606959
Url: https://administrator.de/contentid/606959
Ausgedruckt am: 17.11.2024 um 11:11 Uhr
5 Kommentare
Neuester Kommentar
Ich würds so machen:
$valid_values = 'blau','grün'
do {
$input = Read-Host "blau oder grün"
if ($input -notin $valid_values){
write-host "Eingabe fehlerhaft!" -F Red
}
}until($input -in $valid_values)
$input = $input.toUpper();
# go on
$input
S.o. Da steht doch schon wie's geht .
Du kannst natürlich statt einer do...while Schleife auch ne while nehmen, ist ja Jacke wie Hose
Btw. einfach mal Lesen, dann wäre der Thread überflüssig:
https://docs.microsoft.com/de-de/powershell/scripting/learn/ps101/06-flo ...
Du kannst natürlich statt einer do...while Schleife auch ne while nehmen, ist ja Jacke wie Hose
while(($input = Read-Host -Prompt "blau oder grün") -notin 'blau','grün'){
write-host "Eingabe fehlerhaft, bitte wiederholen!" -F Red
}
$input = $input.ToUpper()
$input
Btw. einfach mal Lesen, dann wäre der Thread überflüssig:
https://docs.microsoft.com/de-de/powershell/scripting/learn/ps101/06-flo ...
Moin,
da es mich ohnehin Nerven würde, immer eine komplette Zeichenkette eintippen und diese dann noch mit Enter bestätigen zu müssen etc. hier mal ein Alternativvorschlag:
So kannst du gar nichts mehr verkehrt machen, es sind nur noch die Tasten 'b' & 'g' als Eingabe zulässig - und man muss nicht noch extra mit Enter bestätigen.
Gruß Thomas
da es mich ohnehin Nerven würde, immer eine komplette Zeichenkette eintippen und diese dann noch mit Enter bestätigen zu müssen etc. hier mal ein Alternativvorschlag:
write-host -n "[B]lau oder [G]rün? :"
while ('b','g' -NotContains $Key){$Key = [console]::ReadKey($true).KeyChar}
switch ($Key) {
'B' {# Blau}
'G' {# Grün}
}
Gruß Thomas