Sdílet prostřednictvím


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

PSObject

Objekty, které se mají seřadit, můžete převést na Sort-Object.

Výstupy

PSObject

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.