Sort-Object
Sorterar objekt efter egenskapsvärden.
Syntax
Sort-Object
[-Stable]
[-Descending]
[-Unique]
[-InputObject <PSObject>]
[[-Property] <Object[]>]
[-Culture <String>]
[-CaseSensitive]
[<CommonParameters>]
Sort-Object
[-Descending]
[-Unique]
-Top <Int32>
[-InputObject <PSObject>]
[[-Property] <Object[]>]
[-Culture <String>]
[-CaseSensitive]
[<CommonParameters>]
Sort-Object
[-Descending]
[-Unique]
-Bottom <Int32>
[-InputObject <PSObject>]
[[-Property] <Object[]>]
[-Culture <String>]
[-CaseSensitive]
[<CommonParameters>]
Description
Cmdleten Sort-Object
sorterar objekt i stigande eller fallande ordning baserat på objektegenskapsvärden. Om sorteringsegenskaper inte ingår i ett kommando använder PowerShell standardsorteringsegenskaperna för det första indataobjektet. Om indataobjektets typ inte har några standardsorteringsegenskaper försöker PowerShell jämföra själva objekten. Mer information finns i avsnittet Anteckningar.
Du kan sortera objekt efter en enskild egenskap eller flera egenskaper. Flera egenskaper använder hash-tabeller för att sortera i stigande ordning, fallande ordning eller en kombination av sorteringsordningar. Egenskaper sorteras som skiftlägeskänsliga eller skiftlägeskänsliga. Använd parametern Unique för att ta bort dubbletter från utdata.
Exempel
Exempel 1: Sortera den aktuella katalogen efter namn
Det här exemplet sorterar filerna och underkatalogerna i en katalog.
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
Cmdleten Get-ChildItem
hämtar filer och underkataloger från katalogen som anges av parametern PathC:\Test
. Objekten skickas ned i pipelinen till cmdleten Sort-Object
.
Sort-Object
anger ingen egenskap så utdata sorteras efter standardsorteringsegenskapen Namn.
Exempel 2: Sortera den aktuella katalogen efter fillängd
Det här kommandot visar filerna i den aktuella katalogen efter längd i stigande ordning.
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
Cmdleten Get-ChildItem
hämtar filerna från katalogen som anges av parametern Path.
Parametern File anger att Get-ChildItem
endast hämtar filobjekt. Objekten skickas ned i pipelinen till cmdleten Sort-Object
.
Sort-Object
använder parametern Length för att sortera filerna efter längd i stigande ordning.
Exempel 3: Sortera processer efter minnesanvändning
I det här exemplet visas processer med den högsta minnesanvändningen baserat på deras WS-storlek (working set).
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
Cmdleten Get-Process
hämtar listan över processer som körs på datorn. Processobjekten skickas ned i pipelinen till cmdleten Sort-Object
.
Sort-Object
använder parametern Property för att sortera objekten efter WS. Objekten skickas ned i pipelinen till cmdleten Select-Object
.
Select-Object
använder parametern Last för att ange de fem sista objekten, som är de objekt som har högst WS- användning.
I PowerShell 6 är parametern Sort-Object
Bottom ett alternativ till Select-Object
. Till exempel Get-Process | Sort-Object -Property WS -Bottom 5
.
Exempel 4: Sortera HistoryInfo-objekt efter ID
Det här kommandot sorterar PowerShell-sessionens HistoryInfo-objekt med egenskapen ID. Varje PowerShell-session har en egen kommandohistorik.
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\
Cmdleten Get-History
hämtar historikobjekten från den aktuella PowerShell-sessionen. Objekten skickas ned i pipelinen till cmdleten Sort-Object
.
Sort-Object
använder parametern Property för att sortera objekten efter ID. Parametern Fallande sorterar kommandohistoriken från den senaste till den äldsta.
Exempel 5: Använd en hash-tabell för att sortera egenskaper i stigande och fallande ordning
I det här exemplet används två egenskaper för att sortera objekten, Status och DisplayName. Status sorteras i fallande ordning och DisplayName- sorteras i stigande ordning.
En hash-tabell används för att ange värdet för egenskap parameter. Hash-tabellen använder ett uttryck för att ange egenskapsnamn och sorteringsordningar. Mer information om hash-tabeller finns i about_Hash_Tables.
Egenskapen Status som används i hash-tabellen är en uppräknad egenskap. Mer information finns i ServiceControllerStatus.
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
Cmdleten Get-Service
hämtar listan över tjänster på datorn. Tjänstobjekten skickas ned i pipelinen till cmdleten Sort-Object
.
Sort-Object
använder parametern Property med en hash-tabell för att ange egenskapsnamn och sorteringsordningar. Parametern Property sorteras efter två egenskaper, Status i fallande ordning och DisplayName i stigande ordning.
Status är en uppräknad egenskap.
Stoppad har värdet 1 och Running har värdet 4. Parametern fallande är inställd på $True
så att processer som kör visas innan stoppas processer.
DisplayName anger parametern fallande till $False
för att sortera visningsnamnen i alfabetisk ordning.
Exempel 6: Sortera textfiler efter tidsintervall
Det här kommandot sorterar textfiler i fallande ordning efter tidsintervallet mellan CreationTime och LastWriteTime.
Get-ChildItem -Path C:\Test\*.txt |
Sort-Object -Property {$_.CreationTime - $_.LastWriteTime} |
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
Cmdleten Get-ChildItem
använder parametern Path för att ange katalogen C:\Test
och alla *.txt
filer. Objekten skickas ned i pipelinen till cmdleten Sort-Object
.
Sort-Object
använder parametern Property med en scriptblock för att fastställa varje tidsintervall för filer mellan CreationTime och LastWriteTime.
Exempel 7: Sortera namn i en textfil
Det här exemplet visar hur du sorterar en lista från en textfil. Den ursprungliga filen visas som en osorterad lista.
Sort-Object
sorterar innehållet och sorterar sedan innehållet med parametern Unique som tar bort dubbletter.
# All items unsorted
Get-Content -Path C:\Test\ServerNames.txt
localhost
server01
server25
LOCALHOST
Server19
server3
localhost
# All items sorted
Get-Content -Path C:\Test\ServerNames.txt | Sort-Object
localhost
LOCALHOST
localhost
server01
Server19
server25
server3
# Unique filtered items sorted
Get-Content -Path C:\Test\ServerNames.txt | Sort-Object -Unique
localhost
server01
Server19
server25
server3
Cmdleten Get-Content
använder parametern Path för att ange katalogen och filnamnet. Filen ServerNames.txt
innehåller en osorterad lista över datornamn.
Cmdleten Get-Content
använder parametern Path för att ange katalogen och filnamnet. Filen ServerNames.txt
innehåller en osorterad lista över datornamn. Objekten skickas ned i pipelinen till cmdleten Sort-Object
.
Sort-Object
sorterar listan i standardordningen stigande.
Cmdleten Get-Content
använder parametern Path för att ange katalogen och filnamnet. Filen ServerNames.txt
innehåller en osorterad lista över datornamn. Objekten skickas ned i pipelinen till cmdleten Sort-Object
.
Sort-Object
använder parametern Unique för att ta bort dubbletter av datornamn. Listan sorteras i standardordningen stigande.
Exempel 8: Sortera en sträng som ett heltal
Det här exemplet visar hur du sorterar en textfil som innehåller strängobjekt som heltal. Du kan skicka varje kommando nedåt i pipelinen för att Get-Member
och kontrollera att objekten är strängar i stället för heltal. I de här exemplen innehåller filen ProductId.txt
en osorterad lista med produktnummer.
I det första exemplet hämtar Get-Content
innehållet i filen och rörlinjerna till cmdleten Sort-Object
.
Sort-Object
sorterar strängobjekten i stigande ordning.
# String sorted
Get-Content -Path C:\Test\ProductId.txt | Sort-Object
0
1
12345
1500
2
2800
3500
4100
500
6200
77
88
99999
# Integer sorted
Get-Content -Path C:\Test\ProductId.txt | Sort-Object {[int]$_}
0
1
2
77
88
500
1500
2800
3500
4100
6200
12345
99999
I det andra exemplet hämtar Get-Content
innehållet i filen och rörlinjerna till cmdleten Sort-Object
.
Sort-Object
använder ett skriptblock för att konvertera strängarna till heltal. I exempelkoden konverterar [int]
strängen till ett heltal och $_
representerar varje sträng när den kommer ned i pipelinen. Heltalsobjekten skickas ned i pipelinen till cmdleten Sort-Object
.
Sort-Object
sorterar heltalsobjekten i numerisk ordning.
Exempel 9: Använda stabila sorteringar
När du använder parametrarna Top, Bottomeller Stable levereras de sorterade objekten i den ordning de togs emot av Sort-Object
när sorteringsvillkoren är lika. I det här exemplet sorterar vi talen en till 20 efter värdet "modulo 3". Modulo-värdet varierar från noll till två.
1..20 |Sort-Object {$_ % 3}
18
3
15
6
12
9
1
16
13
10
7
4
19
11
8
14
5
17
2
20
1..20 |Sort-Object {$_ % 3} -Stable
3
6
9
12
15
18
1
4
7
10
13
16
19
2
5
8
11
14
17
20
Utdata från den första sorteringen grupperas korrekt efter modulus-värdet, men de enskilda objekten sorteras inte inom modulusintervallet. Den andra sorteringen använder alternativet Stabil för att returnera en stabil sortering.
Exempel 10: Sortera efter flera egenskaper
Om du vill sortera efter flera egenskaper separerar du egenskaperna med kommatecken.
Get-ChildItem -Path C:\Test | Sort-Object Length,Name
Directory: C:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 13/10/2021 22:16 2 File01.txt
-a--- 13/10/2021 22:16 2 File03.txt
-a--- 13/10/2021 22:18 64 File02.txt
-a--- 13/10/2021 22:18 64 File04.txt
Cmdleten Get-ChildItem
hämtar filerna från katalogen som anges av parametern Path.
Objekten skickas ned i pipelinen till cmdleten Sort-Object
.
Sort-Object
använder parametern Length och Name för att sortera filerna efter längd i stigande ordning. Eftersom File01.txt
och File03.txt
har samma längd sorteras de ytterligare efter deras egenskap Namn.
Exempel 11: Sortera hashtables efter nyckelvärde
Från och med PowerShell 6 stöder Sort-Object
sortering av hashtable indata efter nyckelvärden. I följande exempel sorteras en matris med hashtabeller efter värdet för varje hashtables weight
nyckel.
@(
@{ name = 'a' ; weight = 7 }
@{ name = 'b' ; weight = 1 }
@{ name = 'c' ; weight = 3 }
@{ name = 'd' ; weight = 7 }
) | Sort-Object -Property weight -OutVariable Sorted
$Sorted | ForEach-Object -Process { "{0}: {1}" -f $_.name, $_.weight }
Name Value
---- -----
Weight 1
Name b
Weight 3
Name c
Weight 7
Name a
Weight 7
Name d
b: 1
c: 3
a: 7
d: 7
Parametrar
-Bottom
Anger antalet objekt som ska hämtas från slutet av en sorterad objektmatris. Detta resulterar i en stabil sortering.
Den här parametern introducerades i PowerShell 6.0.
Typ: | Int32 |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-CaseSensitive
Anger att sorteringen är skiftlägeskänslig. Sorteringarna är som standard inte skiftlägeskänsliga.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | Case-insensitive |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Culture
Anger den kulturella konfiguration som ska användas för sortering. Använd Get-Culture
för att visa systemets kulturkonfiguration.
Typ: | String |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Descending
Anger att Sort-Object
sorterar objekten i fallande ordning. Standardvärdet är stigande ordning.
Om du vill sortera flera egenskaper med olika sorteringsordningar använder du en hash-tabell. Med en hash-tabell kan du till exempel sortera en egenskap i stigande ordning och en annan egenskap i fallande ordning.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | Ascending |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-InputObject
Om du vill sortera objekt skickar du dem nedåt i pipelinen för att Sort-Object
. Om du använder parametern InputObject för att skicka en samling objekt tar Sort-Object
emot ett objekt som representerar samlingen. Eftersom ett objekt inte kan sorteras returnerar Sort-Object
hela samlingen oförändrad.
Typ: | PSObject |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | False |
-Property
Anger de egenskapsnamn som Sort-Object
använder för att sortera objekten. Jokertecken tillåts.
Objekt sorteras baserat på egenskapsvärdena. Om du inte anger en egenskap sorterar Sort-Object
baserat på standardegenskaperna för objekttypen eller själva objekten.
Använd kommatecken för att separera flera egenskaper. Flera egenskaper kan sorteras i stigande ordning, fallande ordning eller en kombination av sorteringsordningar. När du anger flera egenskaper sorteras objekten efter den första egenskapen. Om flera objekt har samma värde för den första egenskapen sorteras dessa objekt efter den andra egenskapen. Den här processen fortsätter tills det inte finns några fler angivna egenskaper eller inga grupper av objekt.
Värdet för egenskap parametern kan vara en beräknad egenskap. Om du vill skapa en beräknad egenskap använder du en scriptblock eller en hashtable.
Giltiga nycklar för en hash-tabell är följande:
-
expression
-<string>
eller<script block>
-
ascending
ellerdescending
-<boolean>
Mer information finns i about_Calculated_Properties.
Typ: | Object[] |
Position: | 0 |
Standardvärde: | Default properties |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | True |
-Stable
De sorterade objekten levereras i den ordning de togs emot när sorteringsvillkoren är lika.
Den här parametern lades till i PowerShell v6.2.0.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Top
Anger antalet objekt som ska hämtas från början av en sorterad objektmatris. Detta resulterar i en stabil sortering.
Den här parametern introducerades i PowerShell 6.0.
Typ: | Int32 |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Unique
Anger att Sort-Object
eliminerar dubbletter och endast returnerar de unika medlemmarna i samlingen. Den första instansen av ett unikt värde ingår i sorterade utdata.
Unikt är skiftlägeskänsligt. Strängar som bara skiljer sig åt efter teckenfall anses vara desamma. Till exempel tecken och TECKEN.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | All |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
Indata
Du kan skicka ut de objekt som ska sorteras till den här cmdleten.
Utdata
Den här cmdleten returnerar de sorterade objekten.
Kommentarer
PowerShell innehåller följande alias för Sort-Object
:
- Windows:
sort
Cmdleten Sort-Object
sorterar objekt baserat på egenskaper som anges i kommandot eller standardsorteringsegenskaperna för objekttypen. Standardsorteringsegenskaper definieras med hjälp av PropertySet
med namnet DefaultKeyPropertySet
i en types.ps1xml
fil. Mer information finns i about_Types.ps1xml.
Om ett objekt inte har någon av de angivna egenskaperna tolkas egenskapsvärdet för objektet av Sort-Object
som Null- och placeras i slutet av sorteringsordningen.
När det inte finns några sorteringsegenskaper försöker PowerShell jämföra själva objekten.
Sort-Object
använder metoden Compare för varje egenskap. Om en egenskap inte implementerar IComparablekonverterar cmdleten egenskapsvärdet till en sträng och använder metoden Compare för System.String. Mer information finns i PSObject.CompareTo(Object)-metoden.
Om du sorterar efter en uppräknad egenskap, till exempel Status, Sort-Object
sorterar efter uppräkningsvärdena. För Windows-tjänster har Stoppad värdet 1 och Running har värdet 4.
Stoppad sorteras innan Körs på grund av de uppräknade värdena. Mer information finns i ServiceControllerStatus.
Sorteringsalgoritmens prestanda är långsammare när du utför en stabil sortering.