Sterowanie przepływem, czyli pętle i instrukcje warunkowe

PowerShell pętle i instrukcje warunkowe

Dlaczego Twój kod powinien myśleć?

Czym są pętle i warunki?

Instrukcje warunkowe, czyli podejmowanie decyzji

If (Warunek1) {
   
    Warunek1 został spełniony.

} elseif (Warunek2) {
   
    Warunek2 został spełniony.

} else {

    Żaden warunek nie został spełniony.
}
$liczba=3

if ($liczba -gt 10) {

    Write-Output "Wartość $liczba jest większa niż 10."

} elseif ($liczba -eq 10) {

    Write-Output "Wartość $liczba jest równa 10."

} else {

    Write-Output "Wartość $liczba jest mniejsza niż 10."

}
Wartość 3 jest mniejsza niż 10.

Operatory porównania

Instrukcja warunkowa switch

switch (<wyrażenie>) {

    <wartość1> { <blok kodu> }

    <wartość2> { <blok kodu> }

    Default { <blok kodu domyślny> }
}
$day = (Get-Date).DayOfWeek

switch ($day) {
    "Monday"  { Write-Host "Początek tygodnia" }
    "Friday"  { Write-Host "Prawie weekend!" }
    "Saturday" { Write-Host "Weekend" }
    "Sunday"   { Write-Host "Odpoczynek" }
    Default   { Write-Host "Zwykły dzień" }
}
Zwykły dzień

Operator trójargumentowy (ternary operator) w PowerShell 7

Wwynik = Warunek ? "True" : "False"
$wiek = Read-Host
$status = ($wiek -ge 18) ? "Pełnoletnia" : "Niepełnoletnia"
Write-Host "Osoba jest: $status"
PS C:\Users\Admin> $wiek = Read-Host
10
PS C:\Users\Admin> $status = ($wiek -ge 18) ? "Pełnoletnia" : "Niepełnoletnia"
PS C:\Users\Admin> Write-Host "Osoba jest: $status"
Osoba jest: Niepełnoletnia

Pętle – czyli powtarzanie działań

Pętla:for

#Deklaracja zmiennej Path
$Path = "C:\Test"

for ($i = 1; $i -le 5; $i++) {
    New-Item -Path $Path -Name "Katalog_$i" -ItemType Directory
    Write-Host "Utworzono Katalog_$i"
}

Pętlaforeach

$NoweKatalogi = @("1", "2", "3", "4", "5")

foreach ($Katalog in $NoweKatalogi) {
    
    New-Item -Path C:\Test -Name "Katalog_$katalog" -ItemType Directory
    Write-Host "Utworzono katalog: Katalog_$Katalog"
}

Pętla:while

$i = 1                         

while ($i -le 5) {             
    
    New-Item -Path C:\Test -Name "Katalog_$i" -ItemType Directory
    Write-Host "Utworzono: Katalog_$i"
    
    $i++                        
}

Cmdlet ForEach-Object

1..5 | ForEach-Object {

   New-Item -Path $Path -Name "Katalog_$_" -ItemType Directory
   Write-Host "Utworzono: Katalog_$_"

}

Dodatkowe instrukcje sterujące

for ($i = 1; $i -le 10; $i++) {

    if ($i -eq 3) {
        Write-Host "Pominięto wartość 3"
        continue   # pomija tę iterację i przechodzi do następnej
    }

    if ($i -eq 7) {
        Write-Host "Zatrzymano pętlę przy wartości 7"
        break      # przerywa całą pętlę
    }

    Write-Host "Aktualna wartość: $i"
}

Łączenie pętli i warunków

$drives = Get-PSDrive -PSProvider 'FileSystem'

foreach ($drive in $drives) {
    if ($drive.Free -lt 1GB) {
        Write-Output "Uwaga: mało miejsca na dysku $($drive.Name)"
    } else {
        Write-Output "Dysk $($drive.Name) ma wystarczająco dużo miejsca."
    }
}

Podsumowanie


To wszystko na dziś!

Jeśli masz ciekawe spostrzeżenia lub doświadczenia w tym temacie – koniecznie podziel się nimi w komentarzach.
A jeśli moje materiały są dla Ciebie pomocne, możesz postawić mi wirtualną kawę.

Dzięki za wsparcie!

Postaw mi kawę na buycoffee.to

Adam Pietrzak

Trener IT | Autor szkoleń | Entuzjasta PowerShella

Administrator systemów i sieci wsparcia działań wojskowych z ponad 10-letnim doświadczeniem. Praktyk w dziedzinie bezpieczeństwa systemu Windows, automatyzacji zadań (PowerShell) oraz rozwiązań chmurowych. Trener i twórca materiałów edukacyjnych (szkolenia, warsztaty, artykuły, podręczniki). Pasjonat dzielenia się wiedzą i wspierania początkujących administratorów IT. Prywatnie – amator aktywnego wypoczynku i rodzinnych podróży.


PowerShell - 10 sposobów na optymalizację codziennej pracy

Podziel się

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *