Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz 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
...
Można również sortować obiekty w odwrotnej kolejności, określając parametr Przełącznik malejący .
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 rosnąco lub maleją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ć blokadę skryptu na klucz wyrażenia . Podczas uruchamiania Sort-Object polecenia cmdlet blok skryptu jest wykonywany, a wynik jest używany do sortowania.
Poniższy przykład sortuje obiekty w kolejności malejącej według przedziału czasu między wartością CreationTime i 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
Nazwę parametru właściwości można pominąć w następujący sposób:
Sort-Object LastWriteTime, Name
Oprócz tego można odwoływać się do Sort-Object 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ładzie e oznacza Wyrażenie, d oznacza Malejąco, a skrót to Ascending.
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