Sort-Object
Seřadí objekty podle hodnot vlastností.
Syntax
Sort-Object
[[-Property] <Object[]>]
[-Descending]
[-Unique]
[-InputObject <psobject>]
[-Culture <string>]
[-CaseSensitive]
[<CommonParameters>]
Description
Rutina Sort-Object
seřadí objekty ve vzestupném nebo sestupném pořadí na základě hodnot vlastností objektu. Pokud příkaz neobsahuje vlastnosti řazení, Použije PowerShell výchozí vlastnosti řazení.
Objekty můžete řadit podle jedné vlastnosti nebo více vlastností. Více vlastností používá tabulky hash k řazení vzestupně, sestupně nebo v kombinaci pořadí řazení. Vlastnosti jsou seřazené podle rozlišování velkých a malých a malých písmen. Pomocí parametru Unique odstraňte duplicity z výstupu.
Příklady
Příklad 1: Seřazení aktuálního adresáře podle názvu
Tento příkaz seřadí soubory a podadresáře v adresáři.
PS> Get-ChildItem -Path C:\Test | Sort-Object
Directory: C:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2/13/2019 08:55 26 anotherfile.txt
-a---- 2/13/2019 13:26 20 Bfile.txt
-a---- 2/12/2019 15:40 118014 Command.txt
-a---- 2/1/2019 08:43 183 CreateTestFile.ps1
d----- 2/25/2019 18:25 Files
d----- 2/25/2019 18:24 Logs
-ar--- 2/12/2019 14:31 27 ReadOnlyFile.txt
-a---- 2/12/2019 16:24 23 Zsystemlog.log
Rutina Get-ChildItem
získá soubory a podadresáře z adresáře určeného parametrem PathC:\Test. Objekty se posílají do kanálu do rutiny Sort-Object
.
Sort-Object
nezadá vlastnost, takže výstup je seřazen podle výchozí vlastnosti řazení Name.
Příklad 2: Seřazení aktuálního adresáře podle délky souboru
Tento příkaz zobrazí soubory v aktuálním adresáři podle délky ve vzestupném pořadí.
PS> Get-ChildItem -Path C:\Test -File | Sort-Object -Property Length
Directory: C:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2/13/2019 13:26 20 Bfile.txt
-a---- 2/12/2019 16:24 23 Zsystemlog.log
-a---- 2/13/2019 08:55 26 anotherfile.txt
-ar--- 2/12/2019 14:31 27 ReadOnlyFile.txt
-a---- 2/1/2019 08:43 183 CreateTestFile.ps1
-a---- 2/12/2019 15:40 118014 Command.txt
Rutina Get-ChildItem
získá soubory z adresáře určeného parametrem Path .
Parametr File určuje, že Get-ChildItem
se načte pouze objekty souboru. Objekty se posílají do kanálu do rutiny Sort-Object
. Sort-Object
pomocí parametru Length seřadí soubory podle délky ve vzestupném pořadí.
Příklad 3: Řazení procesů podle využití paměti
Tento příklad zobrazuje procesy s nejvyšším využitím paměti na základě velikosti pracovní sady (WS).
PS> Get-Process | Sort-Object -Property WS | Select-Object -Last 5
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
136 193.92 217.11 889.16 87492 8 OUTLOOK
112 347.73 297.02 95.19 106908 8 Teams
206 266.54 323.71 37.17 60620 8 MicrosoftEdgeCP
35 552.19 549.94 131.66 6552 8 Code
0 1.43 595.12 0.00 2780 0 Memory Compression
Rutina Get-Process
získá seznam procesů spuštěných v počítači. Objekty procesu se posílají do kanálu do rutiny Sort-Object
. Sort-Object
pomocí parametru Property seřadí objekty podle WS. Objekty se posílají do kanálu do rutiny Select-Object
.
Select-Object
používá parametr Last k určení posledních pěti objektů, což jsou objekty s nejvyšším využitím WS .
Příklad 4: Řazení objektů HistoryInfo podle ID
Tento příkaz seřadí objekty HistoryInfo relace PowerShellu pomocí vlastnosti Id . Každá relace PowerShellu má vlastní historii příkazů.
PS> Get-History | Sort-Object -Property Id -Descending
Id CommandLine
-- -----------
10 Get-Command Sort-Object -Syntax
9 $PSVersionTable
8 Get-Command Sort-Object -Syntax
7 Get-Command Sort-Object -ShowCommandInfo
6 Get-ChildItem -Path C:\Test | Sort-Object -Property Length
5 Get-Help Clear-History -online
4 Get-Help Clear-History -full
3 Get-ChildItem | Get-Member
2 Get-Command Sort-Object -Syntax
1 Set-Location C:\Test\
Rutina Get-History
získá objekty historie z aktuální relace PowerShellu. Objekty se posílají do kanálu do rutiny Sort-Object
. Sort-Object
pomocí parametru Property seřadí objekty podle ID. Parametr Descending seřadí historii příkazů od nejnovějších po nejstarší.
Příklad 5: Použití hash tabulky k řazení vlastností ve vzestupném a sestupném pořadí
Tento příkaz používá k řazení objektů dvě vlastnosti , Status a DisplayName. Stav se seřadí sestupně a DisplayName je seřazený vzestupně.
K určení hodnoty parametru Property se používá tabulka hash. Hashovací tabulka používá výraz k určení názvů vlastností a pořadí řazení. Další informace o tabulkách hash najdete v tématu about_Hash_Tables.
Vlastnost Status použitá v tabulce hash je výčtová vlastnost. Další informace najdete v tématu ServiceControllerStatus.
PS C:\> Get-Service | Sort-Object -Property @{Expression = "Status"; Descending = $True}, @{Expression = "DisplayName"; Descending = $False}
Status Name DisplayName
------ ---- -----------
Running Appinfo Application Information
Running BthAvctpSvc AVCTP service
Running BrokerInfrastru... Background Tasks Infrastructure Ser...
Running BDESVC BitLocker Drive Encryption Service
Running CoreMessagingRe... CoreMessaging
Running VaultSvc Credential Manager
Running DsSvc Data Sharing Service
Running Dhcp DHCP Client
...
Stopped ALG Application Layer Gateway Service
Stopped AppMgmt Application Management
Stopped BITS Background Intelligent Transfer Ser...
Stopped wbengine Block Level Backup Engine Service
Stopped BluetoothUserSe... Bluetooth User Support Service_14fb...
Stopped COMSysApp COM+ System Application
Stopped smstsmgr ConfigMgr Task Sequence Agent
Stopped DeviceInstall Device Install Service
Stopped MSDTC Distributed Transaction Coordinator
Rutina Get-Service
získá seznam služeb v počítači. Objekty služby se odesílají do kanálu do rutiny Sort-Object
. Sort-Object
používá parametr Property s tabulkou hash k určení názvů vlastností a pořadí řazení. Parametr Property je seřazený podle dvou vlastností : Status v sestupném pořadí a DisplayName ve vzestupném pořadí.
Status je vlastnost výčtu. Zastaveno má hodnotu 1 a spuštěné má hodnotu 4. Parametr Descending je nastavený na $True
, aby se spuštěné procesy zobrazovaly před zastavenými procesy. DisplayName nastaví parametr Descending na a $False
seřadí zobrazované názvy podle abecedy.
Příklad 6: Řazení textových souborů podle časového rozsahu
Tento příkaz seřadí textové soubory sestupně podle časového rozsahu mezi CreationTime a LastWriteTime.
PS> Get-ChildItem -Path C:\Test\*.txt | Sort-Object -Property @{Expression = {$_.CreationTime - $_.LastWriteTime}; Descending = $False} | Format-Table CreationTime, LastWriteTime, FullName
CreationTime LastWriteTime FullName
------------ ------------- --------
11/21/2018 12:39:01 2/26/2019 08:59:36 C:\Test\test2.txt
12/4/2018 08:29:41 2/26/2019 08:57:05 C:\Test\powershell_list.txt
2/20/2019 08:15:59 2/26/2019 12:09:43 C:\Test\CreateTestFile.txt
2/20/2019 08:15:59 2/26/2019 12:07:41 C:\Test\Command.txt
2/20/2019 08:15:59 2/26/2019 08:57:52 C:\Test\ReadOnlyFile.txt
11/29/2018 15:16:50 12/4/2018 16:16:24 C:\Test\LogData.txt
2/25/2019 18:25:11 2/26/2019 12:08:47 C:\Test\Zsystemlog.txt
2/25/2019 18:25:11 2/26/2019 08:55:33 C:\Test\Bfile.txt
2/26/2019 08:46:59 2/26/2019 12:12:19 C:\Test\LogFile3.txt
Rutina Get-ChildItem
používá parametr Path k určení adresáře C:\Test a všech *.txt
souborů. Objekty se posílají do kanálu do rutiny Sort-Object
.
Sort-Object
Používá parametr Property s tabulkou hash k určení časového rozsahu jednotlivých souborů mezi CreationTime a LastWriteTime. Parametr Descending je nastaven na $False
hodnotu pro řazení v pořadí od nejdelšího do nejkratšího časového rozsahu.
Příklad 7: Řazení názvů v textovém souboru
Tento příklad ukazuje, jak seřadit seznam z textového souboru. Původní soubor se zobrazí jako neseřaděný seznam. Sort-Object
seřadí obsah a pak obsah seřadí pomocí parametru Unique , který odebere duplicity.
PS> Get-Content -Path C:\Test\ServerNames.txt
localhost
server01
server25
LOCALHOST
Server19
server3
localhost
PS> Get-Content -Path C:\Test\ServerNames.txt | Sort-Object
localhost
LOCALHOST
localhost
server01
Server19
server25
server3
PS> Get-Content -Path C:\Test\ServerNames.txt | Sort-Object -Unique
localhost
server01
Server19
server25
server3
Rutina Get-Content
používá parametr Path k určení adresáře a názvu souboru. SouborServerNames.txt obsahuje neseřazený seznam názvů počítačů.
Rutina Get-Content
používá parametr Path k určení adresáře a názvu souboru. SouborServerNames.txt obsahuje neseřazený seznam názvů počítačů. Objekty se posílají do kanálu do rutiny Sort-Object
. Sort-Object
seřadí seznam ve výchozím pořadí vzestupně.
Rutina Get-Content
používá parametr Path k určení adresáře a názvu souboru. SouborServerNames.txt obsahuje neseřazený seznam názvů počítačů. Objekty se posílají do kanálu do rutiny Sort-Object
. Sort-Object
pomocí parametru Unique odebere duplicitní názvy počítačů. Seznam je seřazený ve výchozím pořadí vzestupně.
Příklad 8: Seřazení řetězce jako celého čísla
Tento příklad ukazuje, jak seřadit textový soubor, který obsahuje řetězcové objekty jako celá čísla. Každý příkaz můžete odeslat do kanálu Get-Member
a ověřit, že objekty jsou řetězce nebo celá čísla.
PS> Get-Content -Path C:\Test\ProductId.txt | Sort-Object
0
1
12345
1500
2
2800
3500
4100
500
6200
77
88
99999
PS> Get-Content -Path C:\Test\ProductId.txt | ForEach-Object -Process {[int]$_} | Sort-Object
0
1
2
77
88
500
1500
2800
3500
4100
6200
12345
99999
Rutina Get-Content
používá parametr Path k určení adresáře a názvu souboru. SouborProductId.txt obsahuje neseřazený seznam čísel produktů. Objekty řetězců se posílají do kanálu rutiny Sort-Object
. Sort-Object
seřadí objekty řetězců ve vzestupném pořadí.
Rutina Get-Content
používá parametr Path k určení adresáře a názvu souboru. SouborProductId.txt obsahuje neseřazený seznam čísel produktů. Objekty řetězců se posílají do kanálu rutiny ForEach-Object
. ForEach-Object
používá blok skriptu k převodu řetězců na celá čísla. V ukázkovém kódu [int]
převede řetězec na celé číslo a $_
představuje každý řetězec, který přichází do kanálu. Celočíselné objekty se odesílají do kanálu do rutiny Sort-Object
. Sort-Object
seřadí celočíselné objekty v číselném pořadí.
Parametry
-CaseSensitive
Označuje, že řazení rozlišuje velká a malá písmena. Ve výchozím nastavení řazení nerozlišují malá a velká písmena.
Type: | SwitchParameter |
Position: | Named |
Default value: | Case-insensitive |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Culture
Určuje kulturní konfiguraci, která se má použít pro řazení. Slouží Get-Culture
k zobrazení konfigurace jazykové verze systému.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Descending
Označuje, že Sort-Object
seřadí objekty v sestupném pořadí. Výchozí hodnota je vzestupné pořadí.
Pokud chcete seřadit více vlastností s různými pořadími řazení, použijte zatřiďovací tabulku. Pomocí zatřiďovací tabulky můžete například seřadit jednu vlastnost vzestupně a druhou v sestupném pořadí.
Type: | SwitchParameter |
Position: | Named |
Default value: | Ascending |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Pokud chcete objekty seřadit, odešlete je kanálem do Sort-Object
. Pokud použijete inputObject parametr odeslat kolekci položek, Sort-Object
obdrží jeden objekt, který představuje kolekci. Vzhledem k tomu, že jeden objekt nelze seřadit, Sort-Object
vrátí se celá kolekce beze změny.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Property
Určuje názvy vlastností, které Sort-Object
se používají k řazení objektů. Zástupné cardy jsou povolené.
Objekty jsou seřazeny podle hodnot vlastností. Pokud nezadáte vlastnost, Sort-Object
seřadí se na základě výchozích vlastností pro typ objektu.
Více vlastností lze seřadit vzestupně, sestupně nebo kombinací pořadí řazení. Když zadáte více vlastností, objekty se seřadí podle první vlastnosti. Pokud má více objektů stejnou hodnotu pro první vlastnost, jsou tyto objekty seřazeny podle druhé vlastnosti. Tento proces pokračuje, dokud nebudou k dispozici žádné další zadané vlastnosti nebo žádné skupiny objektů.
Hodnota parametru Property může být počítaná vlastnost. K vytvoření počítané vlastnosti použijte tabulku hash.
Platné klíče pro zatřiďovací tabulku jsou následující:
- Blok řetězce výrazu <> nebo <skriptu>
- Vzestupná <logická hodnota>
- Sestupná <logická hodnota>
Type: | Object[] |
Position: | 0 |
Default value: | Default properties |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Unique
Označuje, že Sort-Object
odstraňuje duplicity a vrací pouze jedinečné členy kolekce. První instance jedinečné hodnoty je zahrnuta do seřazeného výstupu.
Jedinečná hodnota nerozlišuje malá a velká písmena. Řetězce, které se liší pouze velikostí písmen, jsou považovány za stejné. Například znak a ZNAK.
Type: | SwitchParameter |
Position: | Named |
Default value: | All |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Vstupy
Objekty, které se mají seřadit, můžete převést na Sort-Object
.
Výstupy
Sort-Object
vrátí seřazené objekty.
Poznámky
Rutina Sort-Object
seřadí objekty na základě vlastností zadaných v příkazu nebo výchozích vlastností řazení pro typ objektu. Pokud objekt nemá jednu ze zadaných vlastností, hodnota vlastnosti pro tento objekt je interpretována Sort-Object
jako Null a umístěna na konci pořadí řazení.
Sort-Object
používá metodu Compare pro každou vlastnost. Pokud vlastnost neimplementuje IComparable, rutina převede hodnotu vlastnosti na řetězec a použije metodu Compare pro System.String. Další informace najdete v tématu PSObject.CompareTo(Object) – metoda.
Pokud seřadíte podle vlastnosti výčtu, například Status, Sort-Object
seřadí podle hodnot výčtu. Zastaveno má hodnotu 1 a Spuštěno má hodnotu 4. Zastaveno je seřazeno před spuštěním kvůli výčtu hodnot. Další informace najdete v tématu ServiceControllerStatus.