Erstes Lehrjahr Powershell
Sehr geehrte Community,
ich bin seit dem 01.09 in der Ausbildung. Meine Aufgabe ist es ein Skript zu schreiben, in den man Zahlen subtrahieren lassen muss und das Ergebnis in gewünschter Farbe erscheint. Jetzt dazu soll es in dauerschleife gefragt werden mit der Option nach jeder Rechnung eine Abfrage mit "Wollen sie das Programm beenden. Bei der Auswahl ja, soll das Skript sich beenden und bei Nein von vorne starten.
Leider weiß ich nicht wie ich das Problem lösen soll.
ich bin seit dem 01.09 in der Ausbildung. Meine Aufgabe ist es ein Skript zu schreiben, in den man Zahlen subtrahieren lassen muss und das Ergebnis in gewünschter Farbe erscheint. Jetzt dazu soll es in dauerschleife gefragt werden mit der Option nach jeder Rechnung eine Abfrage mit "Wollen sie das Programm beenden. Bei der Auswahl ja, soll das Skript sich beenden und bei Nein von vorne starten.
Leider weiß ich nicht wie ich das Problem lösen soll.
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
for(){
$zahl1 = read-host "Zahl eingeben"
$zahl2 = read-host "Zahl eingeben"
$zahl3 = $zahl1 - $zahl2
if ($zahl3 -gt0) {write-host "Das Ergebnis ist $zahl3" -ForegroundColor Green}
if (0 -eq $zahl3) {write-host "Das Ergebnis ist $zahl3" -ForegroundColor Yellow}
if ($zahl3 -lt 0) {write-host "Das Ergebnis ist $zahl3" -ForegroundColor DarkRed}
Read-Host = "Möchten sie das Programm beenden?"
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Frank am 13.09.2022 um 16:28:26 Uhr
Code Tags hinzugefügt
Kommentar vom Moderator Dani am 12.09.2022 um 12:28:59 Uhr
Titel angepasst.
Content-ID: 3914740273
Url: https://administrator.de/forum/erstes-lehrjahr-powershell-3914740273.html
Ausgedruckt am: 10.04.2025 um 14:04 Uhr
7 Kommentare
Neuester Kommentar
Moin,
fast.
Ich würde eine Do-While-Schleife nehmen:
hth
Erik
P.S.: Den netten grauen Hintergrund und Schrift fester Breite bekommst Du mit Klick auf </> oder der Eingabe von < code > und </ code > (ohne Leerzeichen).
fast.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
do {
$zahl1 = read-host "Zahl eingeben"
$zahl2 = read-host "Zahl eingeben"
$zahl3 = $zahl1 - $zahl2
if ($zahl3 -gt0) {write-host "Das Ergebnis ist $zahl3" -ForegroundColor Green}
if (0 -eq $zahl3) {write-host "Das Ergebnis ist $zahl3" -ForegroundColor Yellow}
if ($zahl3 -lt 0) {write-host "Das Ergebnis ist $zahl3" -ForegroundColor DarkRed}
$stop = Read-Host "Möchten sie das Programm beenden? (J/N)"
while(($stop -ne "J") -and ($stop -ne "N")) {
$stop = read-host "Hey! J oder N eingeben!"
}
} while($stop -ne "J")
hth
Erik
P.S.: Den netten grauen Hintergrund und Schrift fester Breite bekommst Du mit Klick auf </> oder der Eingabe von < code > und </ code > (ohne Leerzeichen).
Moin,
ich würde die Ja/Nein-Abfrage mit der ReadKey-Methode der Console-Klasse, anstelle des Read-Host Cmdlets, machen.
Der Vorteil ist, dass der Nutzer wirklich nur noch die Buchstaben "J" und "N" statt einer kompletten Zeichenkette tippen kann.
Gruß Thomas
PS: Das funktioniert allerdings nicht in der ISE, da selbige keine Konsole besitzt.
1
$stop = Read-Host "Möchten sie das Programm beenden? (J/N)"
Der Vorteil ist, dass der Nutzer wirklich nur noch die Buchstaben "J" und "N" statt einer kompletten Zeichenkette tippen kann.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
do {
$zahl1 = read-host "Zahl eingeben"
$zahl2 = read-host "Zahl eingeben"
$zahl3 = $zahl1 - $zahl2
if ($zahl3 -gt0) {write-host "Das Ergebnis ist $zahl3" -ForegroundColor Green}
if (0 -eq $zahl3) {write-host "Das Ergebnis ist $zahl3" -ForegroundColor Yellow}
if ($zahl3 -lt 0) {write-host "Das Ergebnis ist $zahl3" -ForegroundColor DarkRed}
Write-Host -NoNewLine "Möchten sie das Programm beenden? (J/N): "
do {$Key = [Console]::ReadKey($true)} until ("J","N" -Contains $Key.Keychar)
Write-Host $Key.Keychar
} while ($Key.Keychar -ne "j")
Gruß Thomas
PS: Das funktioniert allerdings nicht in der ISE, da selbige keine Konsole besitzt.
Moin,
Ja, aber nicht im ersten Lehrjahr. Das fällt dem Lehrer auf.
Viel noch lernen muss der junge Padawan. 
Liebe Grüße
Erik
Zitat von @TK1987:
1
2
3
4
5
6
7
2
3
4
5
6
7
do {
[...]
Write-Host -NoNewLine "Möchten sie das Programm beenden? (J/N): "
do {$Key = [Console]::ReadKey($true)} until ("J","N" -Contains $Key.Keychar)
Write-Host $Key.Keychar
} while ($Key.Keychar -ne "j")
Ja, aber nicht im ersten Lehrjahr. Das fällt dem Lehrer auf.
Liebe Grüße
Erik