[Powershell] While-Schleife, durchlauf limitieren?

timo2607

Lieutenant
Registriert
Feb. 2011
Beiträge
725
Hallo liebe Community,

ich bin aktuell dabei mich ein wenig in die Materie von Powershell einzuarbeiten und schreibe aktuell auch mein erstes kleines Script. Nun habe ich ein kleines Problem, an dem ich allerdings nicht mehr weiterkomme.

Ich habe folgende while-schleife gebastelt.

Code:
function test ($test)
{
	$test = Read-Host "Geben Sie die IP-Adresse für den zu installierenden Server ein:"
	while ($test -match "\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b" -ne "True")
	{
		$test = Read-Host "Ungültige IP! Wiederholen Sie Ihre Eingabe für die IP-Adresse."
        }
}

So der Inhalt ist denke ich erstmal garnicht sooo wichtig.

Mein Problem ist allerdings folgendes. Ich möchte ganz einfach, dass die While-Schleife so lang durchlaufen wird bis die Bedingung erfüllt ist. Allerdings habe ich nun festgestellt, dass ich dadurch nichtmal aus dem Programm rauskomme, selbst wenn ich auf Abbrechen drücke.

Habe ich die Möglichkeit die While-Schleife nur z.B 3x durchlaufen zu lassen, bis der dann automatisch das Programm abbricht?

Und bitte nicht zu hart mit mir sein, dass ist mein erstes Script was ich überhaupt bastel :-)

Danke sehr für eure Hilfe!

MFG
 
Einfach eine zweite Bedingung machen mit einer Variable die du in der Schleife hochzählst. Also mit einem "UND" verknüpft in der der while-Bedingung. Dann bricht er ab sobald eine der beiden Bedingungen nicht erfüllt ist.
 
Lass einfach einen Counter mitzählen und wenn dieser x überschreitet, brichst du die Anwendung mit einer Fehlermeldung ab.
Code:
function test ($test)
{
    $test = Read-Host "Geben Sie die IP-Adresse für den zu installierenden Server ein:"
    $cnt = 0;
    while ($test -match "\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b" -ne "True")
    {
        ++$cnt;
        if( $cnt -gt 3 )
        {
            abbruch_ip
        }
        $test = Read-Host "Ungültige IP! Wiederholen Sie Ihre Eingabe für die IP-Adresse."
    }
}

function abbruch_ip()
{
    echo 'Die IP wurde x mal falsch eingegeben! Abbruch...'
    exit
}

test -test 'a'
Code:
Geben Sie die IP-Adresse für den zu installierenden Server ein:: a
Ungültige IP! Wiederholen Sie Ihre Eingabe für die IP-Adresse.: b
Ungültige IP! Wiederholen Sie Ihre Eingabe für die IP-Adresse.: c
Ungültige IP! Wiederholen Sie Ihre Eingabe für die IP-Adresse.: d
Die IP wurde x mal falsch eingegeben! Abbruch...
 
Wenn eine Schleife mindestens einmal durchlaufen werden soll, würde ich eher eine do-while-Schleife nutzen versuchen als Code redundant zu schreiben...

Edit: Ok, aufgrund der Fehlermeldung ist die normale while hier schon auch sinnvoll.
 
Zuletzt bearbeitet:
So ich habe es einigermaßen hinbekommen. Ich danke euch! Super!! :)
 
Zurück
Oben