Na pewno bardzo często wykorzystujesz if-else
w swoich skryptach PowerShell. Jest to pierwsza instrukcja, która przychodzi do głowy, jeśli trzeba podjąć decyzji, który fragment kodu wykonać w zależności od spełnionych warunków.
Zobacz poniższe sposoby użycia instrukcji warunkowej IF, których być może nigdy wcześniej nie wykorzystałeś.
💡 Jeśli potrzebujesz więcej informacji o samej instrukcji warunkowej if
, znajdziesz je we wpisie “Everything you wanted to know about the if
statement“
Przykład 1 – Rezygnacja z bloku else
$Name = 'file.txt' if ($Name -ne 'file.txt') { Write-Warning "Niepoprawna nazwa." } else { Write-Output $Name # kolejne instrukcje }
Zrezygnuj z instrukcji else i wykorzystaj return
w bloku po if do wyjścia ze skryptu lub funkcji. W sytuacji spełnienia warunku kod poniżej nie zostanie wykonany.
$Name = 'file.txt' if ($Name -ne 'file.txt') { Write-Warning "Niepoprawna nazwa. Koniec działania skryptu" return } Write-Output $Name # kolejne instrukcje
Przykład 2 – Przypisanie wartości
$Parameter = 2 if ($Parameter -eq 1 ) { $Device = 'Client' } elseif ($Parameter -eq 2) { $Device = 'Server' } else { $Device = 'Nothing' } Write-Output $Device
Zamiast przypisywać do zmiennej wartość w każdym bloku, przypisz do niej całą instrukcji if. W ten sposób łatwiej będzie Ci np. zmienić nazwę zmiennej.
$Parameter = 2 $Device = if ($Parameter -eq 1 ) { 'Client' } elseif ($Parameter -eq 2) { 'Server' } else { 'Nothing' } Write-Output $Device
Alternatywą może być również taki zapis, gdzie unikamy wykorzystywania elseif. Unikamy złożonej logiki i kod staje się prostszy do zrozumienia.
$Parameter = 1 $Device = if ($Parameter -eq 1 ) { 'Client' } $Device = if ($Parameter -eq 2 ) { 'Server' } Write-Output $Device
Przykład 3 – Zastąpienie instrukcją switch
$Parameter = 2 if ($Parameter -eq 1 ) { $Device = 'Client' } elseif ($Parameter -eq 2) { $Device = 'Server' } else { $Device = 'Nothing' } Write-Output $Device
Jeśli Twoja instrukcja warunkowa jest rozbudowana o sporą ilość elseif, warto zastąpić ją instrukcją switch.
$Parameter = 2 $Device = switch ($Parameter) { 1 { 'Client' } 2 { 'Server' } Default { 'Nothing' } } Write-Output $Device
No comments yet.