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..5Artı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: 53 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 CPowerShell 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)"
}
}- Başlatma: Sayısal bir dizi
$sayılarve bir bölüştürme$temettütanımlanmıştır. - Foreach Döngüsü:
foreachdöngüsü dizideki her sayı üzerinde yinelenir. - Deneme Bloğu:
trybloğ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. - Yakalama Bloğu: Bir hata meydana gelirse (ör. sıfıra bölme),
catchbloğ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 50Bu 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?




