Sprungmarken mit PowerShell?
Hallo,
Ich möchte in einem PowerShell-Skript zu einem beliebigen Punkt im Programm springen. Gibt es da einen Befehl wie "goto" bei der cmd?
2 Antworten
In Powershell gibt es kein Sprungmarken.
Unbedingte Sprünge (um immer wieder das gleiche zu Wiederholen) sind überflüssig , dafür gibt es Schleifen und in der Pipe das ForEach-Object ( Liste | %{ $_ } ).
Letzteres hatte ich bereits in der Antwort auf eine andere Frage als letzte Option demonstriert: https://www.gutefrage.net/frage/fehlermeldungen-der-powershell-deaktivieren#answer-335251712
Auch wenn es nicht als besonders "sauber" gilt kann man eine Schleife mit Break abbrechen.
If (Bedingung) {break}
Allerdings ist das kein guter Stil . (Wenn dies nötig ist, ist bereits das Konzept schlecht durchdacht).
Bedingte Sprünge im Sinne von
if Bedingung goto label
Werden durch bedingte Anweisungsblöcke ersetzt .
Zuletzt auch noch Deklaration von Funktionen, wenn der gleiche Code an verschiedenen Stellen wiederverwendet werden soll. https://www.windowspro.de/script/powershell-funktionen-parametern-aufrufen
Ein besonderes "Schmankerl" ist der Scriptblock. (Am besten vergleichbar mit einem Macro)
Ein eine oder mehrere Kommandos/Funktionen werden in einer Variable gespeichert und über
Invoke-Command -Scriptblock $Variable
...aufgerufen.
Es wäre prima gewesen, wenn Du aufzeigst, was Du tun möchtest. (Notfalls verstehen die versierten Helfer auch Pseudocode. Das macht es leichter gezielt Beispiele/ Lösungen zu erstellen.
Nein, PowerShell hat kein goto mehr.
Goto ist einfach nicht besondern schön, deshalb soll man PowerShell mit if/while/do/for programmieren!