Powershell loop erzeugen
Hallo an alle,
hätte mal wieder eine Frage ^^
Ich wollte ein Script schreiben, welches sich immer wieder von selbst neu startet. Also quasi immer wieder am ende des Script in die erste Zeile springt.
Gibt es denn einen Befehl dafür?
Ich denke hier nicht an eine While oder if else Schleife.
Kann man dies in PS. So etwas wie GoTo?
z.B.
Write-Host "Hello"
Start-Sleep -Seconds 3
[Hier sollte wieder in die erste Zeile gesprungen werden]
Danke!!
LG Simon
hätte mal wieder eine Frage ^^
Ich wollte ein Script schreiben, welches sich immer wieder von selbst neu startet. Also quasi immer wieder am ende des Script in die erste Zeile springt.
Gibt es denn einen Befehl dafür?
Ich denke hier nicht an eine While oder if else Schleife.
Kann man dies in PS. So etwas wie GoTo?
z.B.
Write-Host "Hello"
Start-Sleep -Seconds 3
[Hier sollte wieder in die erste Zeile gesprungen werden]
Danke!!
LG Simon
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 327949
Url: https://administrator.de/contentid/327949
Ausgedruckt am: 05.11.2024 um 15:11 Uhr
6 Kommentare
Neuester Kommentar
Hi,
Do...Loop ?
Wobei ein While..Wend auch nichts anderes ist.
http://www.computerperformance.co.uk/powershell/powershell_loops_do_whi ...
E.
Do...Loop ?
Wobei ein While..Wend auch nichts anderes ist.
http://www.computerperformance.co.uk/powershell/powershell_loops_do_whi ...
E.
Servus Simon,
GOTO ist ganz schlechter "Spaghetti-Code" Programmierstil und gehört in die Zeiten der Programmiersprachenanfänge (Batch/Basic) davon solltest du dich in einer modernen Scriptsprache schnell verabschieden, denn es gibt weit bessere Alternativen um bestehende Codekonstrukte erneut auszuführen wie z.B. Funktionen und Scriptblocks.
Du hast in Powershell verschiedene Möglichkeiten das besser zu machen:
Wobei du jederzeit mit der break Anweisung den Endless-Loop verlassen kannst.
Achtung: Fork-Bomb Gefahr bei langer Laufzeit. Hier wenn dann mit start-process arbeiten ohne auf das Ende zu warten.
Siehe auch
http://windowsitpro.com/systems-management/powershell-goodbye-goto
Grüße Uwe
GOTO ist ganz schlechter "Spaghetti-Code" Programmierstil und gehört in die Zeiten der Programmiersprachenanfänge (Batch/Basic) davon solltest du dich in einer modernen Scriptsprache schnell verabschieden, denn es gibt weit bessere Alternativen um bestehende Codekonstrukte erneut auszuführen wie z.B. Funktionen und Scriptblocks.
Du hast in Powershell verschiedene Möglichkeiten das besser zu machen:
While /Do While / Do Loop etc.
while($true){
write-host "Hello"
sleep 3
}
Erneuter Aufruf des Scripts
In $PSCommandPath steht dann der Scriptname (funktioniert natürlich nur wenn du das Script vorher abspeicherst)Achtung: Fork-Bomb Gefahr bei langer Laufzeit. Hier wenn dann mit start-process arbeiten ohne auf das Ende zu warten.
write-host "Hello"
sleep 3
. $PSCommandPath
Funktion / Scriptblock der sich selber erneut aufruft
$code = {
write-host "Hello"
sleep 3
. $code
}
. $code
Siehe auch
http://windowsitpro.com/systems-management/powershell-goodbye-goto
Grüße Uwe
Hallo,
kurze Frage @colinardo:
Würde ein erneuter Aufruf des Skripts nicht sowas wie eine Forkbomb erzeugen, oder verstehe ich da was falsch?
Gruß, Max
kurze Frage @colinardo:
Würde ein erneuter Aufruf des Skripts nicht sowas wie eine Forkbomb erzeugen, oder verstehe ich da was falsch?
Gruß, Max
Zitat von @Tungdal:
Würde ein erneuter Aufruf des Skripts nicht sowas wie eine Forkbomb erzeugen, oder verstehe ich da was falsch?
Wenn man es so aufruft wie oben so das das Skript auf das Ende wartet ja. Man kann es aber auch per start-process neu starten ohne auf das Ende zu warten dann passiert das nichtWürde ein erneuter Aufruf des Skripts nicht sowas wie eine Forkbomb erzeugen, oder verstehe ich da was falsch?
start powershell -Arg $PSCommandPath -NoNewWindow