PowerShell'de Bir Nesne Dizisi Nasıl Sıralanır


Bir dizi nesneyi sıralamak için PowerShell Sort-Object cmdlet'ini sağlar. Bu PowerShell eğitiminde, gerçek örneklerle PowerShell'deki nesne dizilerini sıralamak için bu cmdlet'in nasıl kullanılacağını keşfedeceğiz.

PowerShell'de bir dizi nesneyi sıralamak için sıralama yapılacak özellik adlarını belirten Sort-Object cmdlet'ini kullanın. Örneğin, $arrayOfObjects | Sort-Object -Property PropertyName, diziyi 'PropertyName'e göre sıralar. Birden fazla özelliğe göre hem artan hem de azalan düzende sıralama yapabilirsiniz.

PowerShell'deki Nesneler ve Diziler Nedir?

Öncelikle PowerShell'deki nesneleri ve dizileri anlayalım. PowerShell'de her şey bir nesnedir. Nesne, verileri (özellikler) ve eylemleri (yöntemleri) saklayan bir veri yapısıdır. Dizi, aynı türde veya farklı türde olabilen nesnelerin bir koleksiyonudur.

PowerShell Sıralama Nesnesi Cmdlet'i

Sort-Object cmdlet'i PowerShell'de sıralamaya yönelik birincil araçtır. Nesneleri bir veya daha fazla özellik değerine göre artan veya azalan sırada sıralar.

Temel Sıralama

Sort-Object ile sıralamanın en basit şekli PowerShell'deki tek bir özelliğe göre yapılır. İşte bir örnek:

$people = @(
    [PSCustomObject]@{Name='Alice'; Age=25},
    [PSCustomObject]@{Name='Bob'; Age=30},
    [PSCustomObject]@{Name='Charlie'; Age=22}
)

$sortedPeople = $people | Sort-Object -Property Age
$sortedPeople

Yukarıdaki komut dosyası, her biri adı ve yaşı olan bir kişiyi temsil eden bir dizi özel nesne oluşturur. Sort-Object'i kullanarak diziyi Age özelliğine göre sıralarız. Varsayılan olarak sıralama artan sıradadır.

Çıktıyı aşağıdaki ekran görüntüsünde görebilirsiniz:

Azalan Düzende Sıralama

PowerShell'de bir dizi nesneyi azalan düzende sıralamak için -Azalan anahtarını kullanın:

$sortedPeopleDescending = $people | Sort-Object -Property Age -Descending
$sortedPeopleDescending

Birden Çok Özelliklere Göre Sıralama

Ayrıca -Property parametresine virgülle ayrılmış bir liste ileterek birden fazla özelliğe göre sıralama yapabilirsiniz.

Burada PowerShell'deki nesnelerin birden çok parametreye göre sıralandığı bir dizi örneği verilmiştir.

$sortedPeopleMultiple = $people | Sort-Object -Property Age, Name
$sortedPeopleMultiple

Bu, insanları önce yaşa göre, ardından her yaş grubundaki isme göre sıralayacaktır.

Komut Dosyası Bloklarıyla Özel Sıralama

Daha karmaşık sıralama kuralları için komut dosyası bloklarını kullanabilirsiniz. Bir komut dosyası bloğu, sıralama için bir ifade belirtmenize olanak tanır:

$sortedPeopleScriptBlock = $people | Sort-Object -Property { $_.Name.Length }
$sortedPeopleScriptBlock

Bu, insanları adlarının uzunluğuna göre sıralayacaktır.

Gelişmiş Sıralama Teknikleri

Büyük/Küçük Harfe Duyarsız Sıralama

PowerShell'in sıralaması varsayılan olarak büyük/küçük harfe duyarlıdır. Büyük/küçük harfe duyarlı olmayan bir sıralama gerçekleştirmek için bir komut dosyası bloğunu ve ToLower() veya ToUpper() yöntemlerini kullanabilirsiniz:

$sortedPeopleCaseInsensitive = $people | Sort-Object -Property { $_.Name.ToLower() }
$sortedPeopleCaseInsensitive

Özel Nesneler ve Hashtable'larla Sıralama

Bazen doğrudan erişilemeyen veya mevcut olmayan bir özelliğe göre sıralama yapmanız gerekebilir. Bu gibi durumlarda hashtable kullanarak anında özel bir özellik oluşturabilirsiniz:

$sortedPeopleCustomProperty = $people | Sort-Object -Property @{Expression={$_.Name.Length}; Ascending=$true}
$sortedPeopleCustomProperty

Bu, komut dosyası bloğu örneğine benzer şekilde kişileri adlarının uzunluğuna göre sıralar, ancak daha ayrıntılıdır ve özellik başına sıralamanın yönünü belirlemek gibi ek seçeneklere izin verir.

  • Sıralama yaparken, sıralamada kullandığınız özelliklerin dizideki tüm nesnelerde mevcut olduğundan daima emin olun.
  • Sort-Object'in yeni bir sıralanmış dizi oluşturduğunu unutmayın; orijinal diziyi yerinde sıralamaz.
  • Nesnelerinizde bulunan özellikleri keşfetmek için Get-Member cmdlet'ini kullanın; bu, neye göre sıralama yapabileceğinizi anlamanıza yardımcı olabilir.

Çözüm

PowerShell'deki nesne dizilerini sıralamak Sort-Object cmdlet'iyle basittir. İster tek bir özelliğe göre, ister birden çok özelliğe göre sıralama yapıyor olun, ister karmaşık ifadeler kullanıyor olun, Sort-Object, veri düzenleme görevleriniz için gereken esnekliği sağlar.

Bu PowerShell eğitiminde, sort-object yöntemini kullanarak PowerShell'de bir dizi nesnenin nasıl sıralanacağını açıkladım.

İlgili makaleler