Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Możemy zorganizować wyświetlane dane, aby ułatwić skanowanie przy użyciu Sort-Object polecenia cmdlet .
Sort-Object przyjmuje nazwę co najmniej jednej właściwości do sortowania i zwraca dane posortowane według wartości tych właściwości.
Sortowanie podstawowe
Rozważ problem z wyświetlaniem podkatalogów i plików w bieżącym katalogu. Jeśli chcemy sortować według wartości LastWriteTime , a następnie według nazwy, możemy to zrobić, wpisując:
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
...
Obiekty można również sortować w odwrotnej kolejności, określając parametr Malejąco[switch] .
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
Korzystanie z tabel skrótów
Różne właściwości można sortować w różnych kolejności przy użyciu tabel skrótów w tablicy. Każda tabela skrótów używa klucza wyrażenia , aby określić nazwę właściwości jako ciąg i klucz rosnąco lub malejąco , aby określić kolejność sortowania według $true lub $false. Klucz Wyrażenia jest obowiązkowy. Klucz Ascendujący lub Descendujący jest opcjonalny.
Poniższy przykład sortuje obiekty w kolejności LastWriteTime malejącej i rosnącej kolejności nazw .
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
...
Możesz również ustawić blok skryptu na klucz Wyrażenie. Podczas uruchamiania Sort-Object cmdlet blok skryptu jest wykonywany, a wynik wykorzystuje się do sortowania.
Poniższy przykład sortuje obiekty w kolejności malejącej według różnicy czasu między atrybutem CreationTime a LastWriteTime.
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
...
Wskazówki
Można pominąć określenie parametru właściwości w następujący sposób:
Sort-Object LastWriteTime, Name
Oprócz tego można odwoływać się do Sort-Object za pomocą jej wbudowanego aliasu sort.
sort LastWriteTime, Name
Klucze w tabelach skrótów do sortowania można skrócić w następujący sposób:
Sort-Object @{ e = 'LastWriteTime'; d = $true }, @{ e = 'Name'; a = $true }
W tym przykładziee oznacza Wyrażenie, d oznacza Malejąco, a a oznacza Rosnąco.
Aby zwiększyć czytelność, można umieścić tabele skrótów w osobnej zmiennej:
$order = @(
@{ Expression = 'LastWriteTime'; Descending = $true }
@{ Expression = 'Name'; Ascending = $true }
)
Get-ChildItem |
Sort-Object $order |
Format-Table LastWriteTime, Name