10.04.2026

Tek elemanlı diziler

Bir dizi (array) oluşturuyorum.

$tamliste = @()

Sonra bu dizinin içini dolduruyorum. Ama işin bir yerinde bu diziyi, bir kritere göre filtrelemek istiyorum.

$filtrelenmis = $tamliste | Where-Object { $_.Name -match $anahtarkelime }

Sonrasında filtrelenmiş $filtrelenmis üzerinde bir for döngüsü ile işlem yapmam gerek.

for ($i = 0; $i -lt $filtrelenmis.Count; $i++) {
    Write-Host "[$i] $($filtrelenmis[$i].Name)"
}

Ama öncesinde boş bir dizi dönüp dönmediğini denetliyorum. Boş bir dizi döndüyse bunu bildirmem gerek.

if ($filtrelenmis.Count -eq 0) {
    Write-Host "Bos liste dondu."
} else {
    Write-Host "Bulunan:`r`n------"
    for ($i = 0; $i -lt $filtrelenmis.Count; $i++) {
        Write-Host "[$i] $($filtrelenmis[$i].Name)"
    }
}

$filtrelenmis değişkeninin sadece 1 elemanlı olması durumunda $filterelenmis.Count'un 1 dönmesini bekleriz. Ama dizinin 1 elemanlı olması durumunda bu artık bir dizi olmuyor, sadece düz bir değişken oluyor. Bu sebeple de .Count tanımlı değil.

Bu durumu düzeltmek için filtreleme satırını

$tamliste = @($tamliste | Where-Object { $_.Name -match $anahtarkelime })

şeklinde düzeltmek gerek.

Hiç yorum yok: