Wie kann ich dieses Powershell script anders schreiben, damit es funktioniert?
Meine Frage steht schon im Titel. Ich habe das Problem, dass er nicht Read-Host versteht. Ich will dass wenn jemand [J] schreibt dann soll er er x auf 1 setzten und alles andere x auf 0
Write-Host "Da ist wohl ein Falscher Ordner, gucken Sie Bitte bei" $newpathkunde "nach" -foregroundcolor darkred
Write-Host " Haben Sie alle falsche Dateien entfernt, dann schreiben sie JA[J]." -foregroundcolor darkred
switch (Read-Host)
{
<J> {
x = 1
continue
}
default{
x = 0
continue
}
}
1 Antwort
der versteht schon Read-Host.
..aber <J> löst schon beim compilieren des Scripts einen schweren Syntaxfehler aus.
Read-Host ist in diesem Fall als Eingabequelle ungünstig, da dieses Cmdlet nach Eingabe eines Zeichens/Strings auf ein abschließendes [Enter] wartet.
Methode $Host.UI.RawUI.ReadKey() liest nur einen Tastendruck.
$choice = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown').Character
'Du hast "{0}" gedrueckt' -f $choice
das geht ersmal
<J> wie oben erwähnt völlig falsch.
Strings werden mit "string" oder literal mit 'string' angegeben.
Variablen werden Durch voranstellen eines $ gekennzeichnet: $Var
Zum switch-statement...
Das continue ist völlig fehl am Platze. Im Gegenteil, ein break ist hier vorteilhaft (wenn 'J' zutrifft, ist die Sache gegessen 😵 wozu dann weitervergleichen?)
demo.ps1
'druecke j oder eine andere Taste'
$choice = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown').Character
switch ($choice)
{
'J' {
$x = 1
break
}
default {
$x = 0
}
}
'der Wert von $x ist {0}' -f $x
pause
sonstiges:
Die idee, war, dass das Script bei J weitergeführt wird. und bei default soll er neustarten
auf blauen Dunst ein do-loop:
do {
Write-Host Laberhababer Schleifenbeginn -fo green
'druecke j oder eine andere Taste'
$choice = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown').Character
switch ($choice){
'J' {
$x = 1
break
}
default {
$x = 0
}
}
'der Wert von $x ist {0}' -f $x
} until ($x)
'Bedingung erfuellt'
pause
also wenn x = 0 geht dann soll die Schleife neustarten und wenn 1 soll er aus der Schleife springen, aber ich habe da paaar probleme