Powershell 7: eksperymentujemy #4

https://xpil.eu/q1j

Powershell 7 wprowadził dwa nowe operatory umożliwiające warunkowe uruchamianie poleceń w łańcuchu.

Wyobraźmy sobie, że chcemy najpierw uruchomić polecenie A a potem polecenie B, ale tylko jeżeli A zakończyło się sukcesem.

Czemu tak? Na przykład A może tworzyć nowy folder a B kopiować coś do niego - nie ma sensu uruchamiać B jeżeli A się nie udało.

Do tego celu służy operator &&:

New-Item -Type Directory -Name "TestFolder01" -ErrorAction SilentlyContinue | Out-Null && Write-Host "Udało się"

Powyższy kod spróbuje utworzyć nowy folder "TestFolder01", a następnie wyświetli komunikat "Udało się" jeżeli wszystko poszło OK.

Można też w drugą stronę: czasami chcemy uruchomić jakąś komendę tylko wtedy, gdy jakaś inna komenda poległa z błędem. Wówczas użyjemy operatora ||:

New-Item -Type Directory -Name "TestFolder01" -ErrorAction SilentlyContinue | Out-Null || Write-Host "Nie udało się"

Tu znów próbujemy utworzyć folder TestFolder01, ale ponieważ taki folder już jest, operacja New-Item nie powiedzie się i dostaniemy na wyjściu komunikat "Nie udało się".

Operatory && i || można oczywiście łączyć:

New-Item -Type Directory -Name "TestFolder02" -ErrorAction SilentlyContinue | Out-Null && Write-Host "Udało się" || Write-Host "Nie udało się"

Powyższa linijka za pierwszym razem da komunikat "Udało się", a za drugim - "Nie udało się". Od biedy można myśleć o parze && - || jak o operatorze trójwartościowym: wykonaj A, jeżeli się uda to wykonaj B, w przeciwnym razie C:

A && B || C

https://xpil.eu/q1j

Leave a Comment

Komentarze mile widziane.

Jeżeli chcesz do komentarza wstawić kod, użyj składni:
[code]
tutaj wstaw swój kod
[/code]

Jeżeli zrobisz literówkę lub zmienisz zdanie, możesz edytować komentarz po jego zatwierdzeniu.