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 $false
azalan 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
PowerShell
A cross-platform task automation solution made up of a command-line shell and a scripting language.
Geri Bildirim
Gönderin ve geri bildirimi görüntüleyin