Sprungmarken mit PowerShell?

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.

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_script_blocks?view=powershell-7

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.

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

Nein, PowerShell hat kein goto mehr.

Goto ist einfach nicht besondern schön, deshalb soll man PowerShell mit if/while/do/for programmieren!

Woher ich das weiß:Studium / Ausbildung – Student der Informatik an der HU Berlin