PowerShell ForEach Döngüsü [Örneklerle]


PowerShell'de uzman olmak için foreach döngüsüyle nasıl çalışılacağını bilmelisiniz. İç içe foreach döngüsünü ve PowerShell foreach döngüsünde hata işlemeyi detaylı bir şekilde anlatacağım.

PowerShell Foreach döngüsü diziler, cmdlet'ler veya betik dosyaları boyunca yinelenir. Bir koleksiyondaki her bir öğeyi işleyerek tekrarlanan görevleri basitleştirir.

Şimdi sözdizimini anlayalım ve foreach döngüsüne ait birkaç örnek verelim.

PowerShell'de ForeEch Döngüsü Nedir?

PowerShell'deki ForEach döngüsü, bir dizi veya liste gibi bir öğe koleksiyonu üzerinde yineleme yapmak ve her öğe üzerinde eylemler gerçekleştirmek için kullanılır. Bu döngü, geliştiricilerin tekrarlanan görevleri otomatikleştirmesine yardımcı olacaktır.

Örneğin, dosya adlarından oluşan bir listeniz varsa PowerShell Foreach döngüsü her dosyayı işleyerek her dosyada aynı eylemleri gerçekleştirebilir.

ForEach Döngüsünün Sözdizimi

İşte PowerShell foreach döngüsünün sözdizimi.

foreach ($item in $collection) {
    # Perform actions with $item
}

Burada, $collection işlenmekte olan dizi veya listedir ve $item her yinelemedeki geçerli öğeyi temsil eder. Kıvrımlı parantezlerin içindeki komut dosyası bloğu, her öğe üzerinde gerçekleştirilen eylemleri tanımlar.

PowerShell foreach döngüsü örnekleri

Şimdi PowerShell'de foreach döngüsü kullanımına ilişkin birkaç örneği inceleyelim.

Örnek-1: Dizi Elemanları Arasında Döngü

Şimdi aşağıdaki gibi bir PowerShell diziniz olduğunu varsayalım:

$numbers = @(1, 2, 3, 4, 5)
or
$numbers = 1..5

Artık yukarıdaki dizide döngü yapmak için aşağıdaki PowerShell betiğini kullanabilirsiniz.

foreach ($number in $numbers) {
    Write-Output $number
}

İşte tam komut dosyası.

$numbers = 1..5
foreach ($number in $numbers) {
    Write-Output $number
}

Bu komut dosyasında, ForEach döngüsü, 1'den 5'e kadar sayıları içeren $numbers dizisi üzerinde yinelenir. Her sayı için, sayıyı konsola verir.

Yukarıdaki PowerShell betiğini çalıştırdım ve çıktıyı aşağıdaki ekran görüntüsünde görebilirsiniz:

PowerShell'de Döngülerin İçindeki Dizeleri Birleştirmeyi Okuyun

Örnek-2: ForEach Döngüsü Kullanarak Klasördeki Dosyalarda Döngü Oluşturma

Şimdi size PowerShell ForEach döngüsünü kullanarak bir klasördeki tüm dosyalar arasında geçiş yapabileceğimiz bir örnek göstereyim.

$items = Get-ChildItem -Path "C:\MyFolder"

ForEach ($item in $items) {
    Write-Output $item.Name
}

Burada Get-ChildItem cmdlet'i C:\MyFolder dizinindeki tüm öğeleri alır ve bunları $items değişkeninde saklar. ForEach döngüsü daha sonra $items koleksiyonundaki her öğe üzerinde yinelenir ve her öğenin adını verir.

Aşağıdaki ekran görüntüsü, betiği VS kodunu kullanarak çalıştırdıktan sonra klasördeki tüm dosya adlarını görüntülediğini gösteriyor.

Örnek-3: ForEach Döngüsü İçindeki Nesneleri Yönetme

foreach döngüsü içinde nesneler çeşitli teknikler kullanılarak değiştirilebilir. Örneğin, nesnelere özellikler eklemek veya mevcut olanları değiştirmek.

İşte bir örnek.

$processes = Get-Process
foreach ($process in $processes) {
    $process | Add-Member -NotePropertyName "IsA" -NotePropertyValue ($process.Name -like "A*")
}

PowerShell'de While Döngüsünü Oku

PowerShell'deki Foreach Döngülerinde Akışı Kontrol Etme

Size foreach döngüsündeki birkaç gelişmiş şeyi göstereyim. Örneğin, PowerShell'deki foreach döngülerinde koşullu ifadeler, Break ve Continue ifadeleri vb. akış kontrol ifadelerinin nasıl kullanılacağını göstereceğim.

1. If İfadeleriyle Koşulları Uygulama

foreach döngüsü içinde If ifadelerini kullanmak, yalnızca belirli koşullar karşılandığında belirli bir kodu çalıştırmanıza olanak tanır. Döngü içindeki koşulu kontrol ederek her bir öğe üzerinde hangi eylemlerin gerçekleştirileceğine karar verebilirsiniz. Örneğin:

foreach ($item in $items) {
    if ($item -eq "target") {
        Write-Output "Found the target!"
    }
}

Bu döngü, $item'in “target” ile eşit olup olmadığını kontrol eder ve ardından bir mesaj verir. If ifadeleri, elseif ve else kullanarak birden fazla koşulu dahil etme esnekliği sağlar.

2. ForEach Döngüsünde Break Kullanın

break ifadesi, ForEach döngüsünden zamanından önce çıkmak için kullanılır. Bu, belirli bir koşul karşılandığında ve artık kalan öğeler üzerinde yineleme yapmaya devam etmenize gerek kalmadığında yararlı olabilir.

İşte bir örnek ve PowerShell betiğinin tamamı.

$numbers = 1..10

ForEach ($number in $numbers) {
    if ($number -eq 5) {
        break
    }
    Write-Output "Number: $number"
}

Bu betiğin çıktısı:

Number: 1
Number: 2
Number: 3
Number: 4

$number 5'e eşit olduğunda döngüden çıkılır.

İşte çıktıyı gösteren ekran görüntüsü, yukarıdaki betiği çalıştırırsanız aynı çıktıyı da alacaksınız.

3. ForEach Döngüsünde Continue'yu kullanın

continue ifadesi, geçerli yinelemeyi atlamak ve koleksiyondaki bir sonraki öğeye geçmek için kullanılır. Bir koşula bağlı olarak belirli öğeleri atlamak istediğinizde bu yararlı olabilir.

İşte tam bir PowerShell betiği.

$numbers = 1..5

ForEach ($number in $numbers) {
    if ($number -eq 3) {
        continue
    }
    Write-Output "Number: $number"
}

Bu betiğin çıktısı:

Number: 1
Number: 2
Number: 4
Number: 5

3 sayısı atlanmıştır.

Referansınız için ekran görüntüsü aşağıdadır:

Döngü İçin PowerShell'i Okuyun

PowerShell'de Yuvalanmış ForEach Döngüsü

İşte gelişmiş bir kavram daha; PowerShell'de iç içe foreach döngüsünün nasıl kullanılacağını size bir örnekle göstereyim.

İç içe döngüler, bir döngünün başka bir döngünün içine eklenmesi anlamına gelir.

İç içe geçmiş ForEach döngüleri, birden fazla koleksiyon üzerinde yineleme yapmak için kullanılır. Burada, iki dizideki öğeleri birleştirmek için iç içe geçmiş döngülerin nasıl kullanılacağına ilişkin bir örnek verilmiştir.

$outerArray = 1..3
$innerArray = 'A','B','C'

ForEach ($outer in $outerArray) {
    ForEach ($inner in $innerArray) {
        Write-Output "$outer $inner"
    }
}

Bu kodda, dış döngü 1'den 3'e kadar olan sayılar üzerinde yinelenir ve iç döngü A'dan C'ye kadar olan harfler üzerinde yinelenir. Her kombinasyon için sayı ve harfin çıktısını verir.

Çıktı:

1 A
1 B
1 C
2 A
2 B
2 C
3 A
3 B
3 C

PowerShell Foreach Döngülerindeki Hataları Ele Alma

Bir PowerShell betiğindeki hataların her zaman işlenmesi önerilir. Şimdi size PowerShell'de foreach döngüsündeki hataların nasıl ele alınacağını göstereyim.

Bu hataları gidermek için foreach döngüsü içindeki Try-Catch bloklarını kullanın. Bu yaklaşım, hatalar oluştuğunda bile komut dosyalarının çalışmaya devam etmesine olanak tanır.

Örneğin:

foreach ($item in $collection) {
    try {
        # Your code here
    } catch {
        Write-Error "An error occurred: $_"
    }
}

Size basit bir sayısal dizi gösterelim ve hataları Foreach döngüsü içinde ele alalım. Örneğin, bir sayıyı dizideki her öğeye bölmeyi deneyebilir ve herhangi bir bölmeyi sıfır hatayla halledebiliriz.

$numbers = @(10, 5, 0, 2)

# Number to be divided
$dividend = 100

# Loop through each number in the array
foreach ($number in $numbers) {
    try {
        # Attempt to divide the dividend by the current number
        $result = $dividend / $number
        Write-Output "100 divided by $number is $result"
    } catch {
        # Handle the error using ${} to delimit the variable name
        Write-Error "Error dividing 100 by ${number}: $($_.Exception.Message)"
    }
}
  1. Başlatma: Sayısal bir dizi $sayılar ve bir bölüştürme $temettü tanımlanmıştır.
  2. Foreach Döngüsü: foreach döngüsü dizideki her sayı üzerinde yinelenir.
  3. Deneme Bloğu: try bloğu içinde, komut dosyası, payını geçerli sayıya bölmeye çalışır. Sayı sıfırsa bu, sıfıra bölme hatasına neden olur.
  4. Yakalama Bloğu: Bir hata meydana gelirse (ör. sıfıra bölme), catch bloğu yürütülür. Hata, Yazma Hatası kullanılarak günlüğe kaydedilir.

Try-catch bloğunu kullandığınızda sıfıra bölme hatası oluşsa bile script dizide kalan sayıları işlemeye devam eder.

Çıktı:

# 100 divided by 10 is 10
# 100 divided by 5 is 20
# Error dividing 100 by 0: Attempted to divide by zero.
# 100 divided by 2 is 50

Bu yöntem, PowerShell'de sayısal diziler işlenirken komut dosyasındaki hataların işlenmesine yardımcı olur.

Aşağıdaki ekran görüntüsünde görebileceğiniz kodu çalıştırdıktan sonraki tam çıktı:

Çözüm

PowerShell ForEach döngüsü diziler, listeler vb. gibi koleksiyonlar arasında yineleme yapmak için kullanışlıdır.

Umarım artık yukarıdaki örneklerle PowerShell foreach döngüsünü kullanma konusunda tam bir fikriniz vardır. Ayrıca şunu da açıkladım:

  • Foreach döngüsünde break ve Continue ifadeleri nasıl kullanılır?
  • PowerShell'de iç içe foreach döngüsü
  • Foreach döngüsünde try-catch nasıl kullanılır?

İlgili makaleler