Nesne sıralama

Görüntülenen verileri düzenleyerek cmdlet'ini kullanarak taramayı Sort-Object kolaylaştırabiliriz. Sort-Object sıralamak için bir veya daha fazla özelliğin adını alır ve bu özelliklerin değerlerine göre sıralanmış verileri döndürür.

Temel sıralama

Geçerli dizindeki alt dizinleri ve dosyaları listeleme sorununu göz önünde bulundurun. LastWriteTime ve ardından Name ölçütüne göre sıralamak istiyorsak şunu yazarak bunu yapabiliriz:

Get-ChildItem |
    Sort-Object -Property LastWriteTime, Name |
    Format-Table -Property LastWriteTime, Name
LastWriteTime          Name
-------------          ----
11/6/2017 10:10:11 AM  .localization-config
11/6/2017 10:10:11 AM  .openpublishing.build.ps1
11/6/2017 10:10:11 AM  appveyor.yml
11/6/2017 10:10:11 AM  LICENSE
11/6/2017 10:10:11 AM  LICENSE-CODE
11/6/2017 10:10:11 AM  ThirdPartyNotices
11/6/2017 10:10:15 AM  tests
6/6/2018 7:58:59 PM    CONTRIBUTING.md
6/6/2018 7:58:59 PM    README.md
...

Azalan anahtar parametresini belirterek nesneleri ters sırada da sıralayabilirsiniz.

Get-ChildItem |
  Sort-Object -Property LastWriteTime, Name -Descending |
  Format-Table -Property LastWriteTime, Name
LastWriteTime          Name
-------------          ----
12/1/2018 10:13:50 PM  reference
12/1/2018 10:13:50 PM  dsc
...
6/6/2018 7:58:59 PM    README.md
6/6/2018 7:58:59 PM    CONTRIBUTING.md
11/6/2017 10:10:15 AM  tests
11/6/2017 10:10:11 AM  ThirdPartyNotices
11/6/2017 10:10:11 AM  LICENSE-CODE
11/6/2017 10:10:11 AM  LICENSE
11/6/2017 10:10:11 AM  appveyor.yml
11/6/2017 10:10:11 AM  .openpublishing.build.ps1
11/6/2017 10:10:11 AM  .localization-config

Karma tabloları kullanma

Dizideki karma tabloları kullanarak farklı düzenlerdeki farklı özellikleri sıralayabilirsiniz. Her karma tablosu, özellik adını dize olarak belirtmek için bir İfade anahtarı, veya ile sıralama düzenini $true belirtmek için artan veya $falseazalan anahtar kullanır. İfade anahtarı zorunludur. Artan veya Azalan tuşu isteğe bağlıdır.

Aşağıdaki örnek, nesneleri azalan LastWriteTime düzeninde ve artan Ad düzeninde sıralar.

Get-ChildItem |
  Sort-Object -Property @{ Expression = 'LastWriteTime'; Descending = $true },
                        @{ Expression = 'Name'; Ascending = $true } |
  Format-Table -Property LastWriteTime, Name
LastWriteTime          Name
-------------          ----
12/1/2018 10:13:50 PM  dsc
12/1/2018 10:13:50 PM  reference
11/29/2018 6:56:01 PM  .openpublishing.redirection.json
11/29/2018 6:56:01 PM  gallery
11/24/2018 10:33:22 AM developer
11/20/2018 7:22:19 PM  .markdownlint.json
...

İfade anahtarına bir betik engellemesi de ayarlayabilirsiniz. Cmdlet çalıştırılırken Sort-Object betik bloğu yürütülür ve sonuç sıralama için kullanılır.

Aşağıdaki örnek nesneleri CreationTime ile LastWriteTime arasındaki zaman aralığına göre azalan düzende sıralar.

Get-ChildItem |
    Sort-Object -Property @{ Exp = { $_.LastWriteTime - $_.CreationTime }; Desc = $true } |
    Format-Table -Property LastWriteTime, CreationTime
LastWriteTime          CreationTime
-------------          ------------
12/1/2018 10:13:50 PM  11/6/2017 10:10:11 AM
12/1/2018 10:13:50 PM  11/6/2017 10:10:11 AM
11/7/2018 6:52:24 PM   11/6/2017 10:10:11 AM
11/7/2018 6:52:24 PM   11/6/2017 10:10:15 AM
11/3/2018 9:58:17 AM   11/6/2017 10:10:11 AM
10/26/2018 4:50:21 PM  11/6/2017 10:10:11 AM
11/17/2018 1:10:57 PM  11/29/2017 5:48:30 PM
11/12/2018 6:29:53 PM  12/7/2017 7:57:07 PM
...

İpuçları

Özellik parametresi adını aşağıdaki gibi atlayabilirsiniz:

Sort-Object LastWriteTime, Name

Ayrıca, yerleşik diğer adına başvurabilirsinizSort-Object: sort

sort LastWriteTime, Name

Karma tablolardaki sıralama anahtarları aşağıdaki gibi kısaltılabilir:

Sort-Object @{ e = 'LastWriteTime'; d = $true }, @{ e = 'Name'; a = $true }

Bu örnekte e ifadesi İfade, d ifadesi Azalan, a ise Artan anlamına gelir.

Okunabilirliği geliştirmek için karma tablolarını ayrı bir değişkene yerleştirebilirsiniz:

$order = @(
  @{ Expression = 'LastWriteTime'; Descending = $true }
  @{ Expression = 'Name'; Ascending = $true }
)

Get-ChildItem |
    Sort-Object $order |
    Format-Table LastWriteTime, Name