Sort-Object
Hiermee sorteert u objecten op eigenschapswaarden.
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
De Sort-Object cmdlet sorteert objecten in oplopende of aflopende volgorde op basis van objecteigenschapswaarden. Als sorteereigenschappen niet zijn opgenomen in een opdracht, gebruikt PowerShell standaard sorteereigenschappen van het eerste invoerobject. Als het type van het invoerobject geen standaardsorteereigenschappen heeft, probeert PowerShell de objecten zelf te vergelijken. Zie de sectie Notities voor meer informatie.
U kunt objecten sorteren op één eigenschap of meerdere eigenschappen. Meerdere eigenschappen gebruiken hashtabellen om in oplopende volgorde, aflopende volgorde of een combinatie van sorteervolgordes te sorteren. Eigenschappen worden gesorteerd als hoofdlettergevoelig of hoofdlettergevoelig. Gebruik de parameter Uniek om duplicaten uit de uitvoer te elimineren.
Voorbeelden
Voorbeeld 1: De huidige map sorteren op naam
In dit voorbeeld worden de bestanden en submappen in een map gesorteerd.
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
Met Get-ChildItem de cmdlet worden de bestanden en submappen opgehaald uit de map die is opgegeven door de parameter Path. C:\Test De objecten worden naar de pijplijn verzonden naar de Sort-Object cmdlet.
Sort-Object geeft geen eigenschap op, zodat de uitvoer wordt gesorteerd op de standaardsorteereigenschap, Naam.
Voorbeeld 2: De huidige map sorteren op lengte van bestand
Met deze opdracht worden de bestanden in de huidige map weergegeven op lengte in oplopende volgorde.
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
De Get-ChildItem cmdlet haalt de bestanden op uit de map die is opgegeven door de parameter Path .
De parameter Bestand geeft aan dat Get-ChildItem alleen bestandsobjecten worden opgehaald. De objecten worden naar de pijplijn verzonden naar de Sort-Object cmdlet. Sort-Object gebruikt de parameter Lengte om de bestanden te sorteren op lengte in oplopende volgorde.
Voorbeeld 3: Processen sorteren op geheugengebruik
In dit voorbeeld worden processen met het hoogste geheugengebruik weergegeven op basis van de WS-grootte (werkset).
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
De Get-Process cmdlet haalt de lijst met processen op die worden uitgevoerd op de computer. De procesobjecten worden naar de pijplijn verzonden naar de Sort-Object cmdlet. Sort-Object gebruikt de parameter Eigenschap om de objecten te sorteren op WS. De objecten worden naar de pijplijn verzonden naar de Select-Object cmdlet.
Select-Object gebruikt de parameter Laatste om de laatste vijf objecten op te geven. Dit zijn de objecten met het hoogste WS-gebruik .
In PowerShell 6 is de Sort-Object parameter Bottom een alternatief voor Select-Object. Bijvoorbeeld Get-Process | Sort-Object -Property WS -Bottom 5.
Voorbeeld 4: Objecten van HistoryInfo sorteren op id
Met deze opdracht worden de HistoryInfo-objecten van de PowerShell-sessie gesorteerd met behulp van de eigenschap Id . Elke PowerShell-sessie heeft een eigen opdrachtgeschiedenis.
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\
Met Get-History de cmdlet worden de geschiedenisobjecten opgehaald uit de huidige PowerShell-sessie. De objecten worden naar de pijplijn verzonden naar de Sort-Object cmdlet. Sort-Object gebruikt de parameter Eigenschap om de objecten te sorteren op id. Met de parameter Aflopend sorteert u de opdrachtgeschiedenis van nieuw naar oud.
Voorbeeld 5: Een hash-tabel gebruiken om eigenschappen in oplopende en aflopende volgorde te sorteren
In dit voorbeeld worden twee eigenschappen gebruikt om de objecten, Status en DisplayName te sorteren. De status wordt in aflopende volgorde gesorteerd en DisplayName wordt in oplopende volgorde gesorteerd.
Er wordt een hashtabel gebruikt om de waarde van de eigenschapsparameter op te geven. De hashtabel maakt gebruik van een expressie om de eigenschapsnamen en sorteervolgordes op te geven. Zie about_Hash_Tables voor meer informatie over hashtabellen.
De eigenschap Status die in de hashtabel wordt gebruikt, is een geïnventareerde eigenschap. Zie ServiceControllerStatus voor meer informatie.
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
De Get-Service cmdlet haalt de lijst met services op de computer op. De serviceobjecten worden via de pijplijn naar de Sort-Object cmdlet verzonden. Sort-Object gebruikt de parameter Eigenschap met een hash-tabel om de eigenschapsnamen en sorteervolgordes op te geven. De parameter Eigenschap wordt gesorteerd op twee eigenschappen, status in aflopende volgorde en DisplayName in oplopende volgorde.
De status is een opgesomde eigenschap. Gestopt heeft een waarde van 1 en Wordt uitgevoerd heeft een waarde van 4. De aflopende parameter is ingesteld op $True zodat actieve processen worden weergegeven vóór gestopte processen. DisplayName stelt de aflopende parameter in om $False de weergavenamen in alfabetische volgorde te sorteren.
Voorbeeld 6: Tekstbestanden sorteren op tijdsduur
Met deze opdracht worden tekstbestanden in aflopende volgorde gesorteerd op de tijdsduur tussen CreationTime en 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
De Get-ChildItem cmdlet gebruikt de parameter Path om de map C:\Test en alle *.txt bestanden op te geven. De objecten worden naar de pijplijn verzonden naar de Sort-Object cmdlet.
Sort-Object gebruikt de parameter Property met een scriptblock om de tijdsduur tussen CreationTime en LastWriteTime te bepalen.
Voorbeeld 7: Namen sorteren in een tekstbestand
In dit voorbeeld ziet u hoe u een lijst uit een tekstbestand sorteert. Het oorspronkelijke bestand wordt weergegeven als een niet-gesorteerde lijst. Sort-Object sorteert de inhoud en sorteert vervolgens de inhoud met de parameter Uniek waarmee duplicaten worden verwijderd.
# 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
De Get-Content cmdlet gebruikt de parameter Path om de map en bestandsnaam op te geven. Het bestand ServerNames.txt bevat een niet-gesorteerde lijst met computernamen.
De Get-Content cmdlet gebruikt de parameter Path om de map en bestandsnaam op te geven. Het bestand ServerNames.txt bevat een niet-gesorteerde lijst met computernamen. De objecten worden naar de pijplijn verzonden naar de Sort-Object cmdlet. Sort-Object Sorteert de lijst in de standaardvolgorde, oplopend.
De Get-Content cmdlet gebruikt de parameter Path om de map en bestandsnaam op te geven. Het bestand ServerNames.txt bevat een niet-gesorteerde lijst met computernamen. De objecten worden naar de pijplijn verzonden naar de Sort-Object cmdlet. Sort-Object gebruikt de parameter Uniek om dubbele computernamen te verwijderen. De lijst wordt gesorteerd in de standaardvolgorde, oplopend.
Voorbeeld 8: Een tekenreeks sorteren als een geheel getal
In dit voorbeeld ziet u hoe u een tekstbestand sorteert dat tekenreeksobjecten als gehele getallen bevat. U kunt elke opdracht omlaag in de pijplijn verzenden en Get-Member controleren of de objecten tekenreeksen zijn in plaats van gehele getallen. Voor deze voorbeelden bevat het ProductId.txt bestand een niet-gesorteerde lijst met productnummers.
In het eerste voorbeeld wordt Get-Content de inhoud van het bestand en pijplijnen naar de Sort-Object cmdlet opgeslagen. Sort-Object sorteert de tekenreeksobjecten in oplopende volgorde.
# 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
In het tweede voorbeeld wordt Get-Content de inhoud van het bestand en pijplijnen naar de Sort-Object cmdlet opgeslagen. Sort-Object gebruikt een scriptblok om de tekenreeksen te converteren naar gehele getallen. In de voorbeeldcode [int] converteert u de tekenreeks naar een geheel getal en $_ vertegenwoordigt u elke tekenreeks terwijl deze in de pijplijn wordt weergegeven. De objecten met gehele getallen worden naar de Sort-Object cmdlet verzonden.
Sort-Object sorteert de gehele getallen in numerieke volgorde.
Voorbeeld 9: Stabiele sorteringen gebruiken
Wanneer u de parameters Top, Bottom of Stable gebruikt, worden de gesorteerde objecten geleverd in de volgorde waarin ze zijn ontvangen Sort-Object wanneer de sorteercriteria gelijk zijn. In dit voorbeeld sorteren we de getallen één tot en met 20 op de waarde 'modulo 3'. De modulo-waarde varieert van nul tot twee.
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
De uitvoer van de eerste sortering wordt correct gegroepeerd op de moduluswaarde, maar de afzonderlijke items worden niet binnen het modulusbereik gesorteerd. De tweede sortering maakt gebruik van de optie Stabiel om een stabiele sortering te retourneren.
Voorbeeld 10: Sorteren op meerdere eigenschappen
Als u wilt sorteren op meerdere eigenschappen, scheidt u de eigenschappen op komma's.
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
De Get-ChildItem cmdlet haalt de bestanden op uit de map die is opgegeven door de parameter Path . De objecten worden naar de pijplijn verzonden naar de Sort-Object cmdlet. Sort-Object gebruikt de parameter Lengte en Naam om de bestanden in oplopende volgorde te sorteren. Aangezien File01.txt en File03.txt dezelfde lengte hebben, worden ze verder gesorteerd op de naam van de eigenschap.
Parameters
Hiermee geeft u het aantal objecten op dat moet worden opgehaald vanaf het einde van een gesorteerde objectmatrix. Dit resulteert in een stabiele sortering.
Deze parameter is geïntroduceerd in PowerShell 6.0.
| Type: | Int32 |
| Position: | Named |
| Default value: | None |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Geeft aan dat de sortering hoofdlettergevoelig is. Standaard zijn sorteringen niet hoofdlettergevoelig.
| Type: | SwitchParameter |
| Position: | Named |
| Default value: | Case-insensitive |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Hiermee geeft u de culturele configuratie te gebruiken voor sorteringen. Gebruik Get-Culture dit om de cultuurconfiguratie van het systeem weer te geven.
| Type: | String |
| Position: | Named |
| Default value: | None |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Geeft aan dat Sort-Object de objecten in aflopende volgorde worden gesorteerd. De standaardwaarde is oplopende volgorde.
Als u meerdere eigenschappen met verschillende sorteervolgordes wilt sorteren, gebruikt u een hash-tabel. Met een hash-tabel kunt u bijvoorbeeld één eigenschap in oplopende volgorde sorteren en een andere eigenschap in aflopende volgorde.
| Type: | SwitchParameter |
| Position: | Named |
| Default value: | Ascending |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Als u objecten wilt sorteren, verzendt u deze naar de pijplijn Sort-Object. Als u de parameter InputObject gebruikt om een verzameling items te verzenden, Sort-Object ontvangt u één object dat de verzameling vertegenwoordigt. Omdat één object niet kan worden gesorteerd, Sort-Object wordt de hele verzameling ongewijzigd geretourneerd.
| Type: | PSObject |
| Position: | Named |
| Default value: | None |
| Accept pipeline input: | True |
| Accept wildcard characters: | False |
Hiermee geeft u de eigenschapsnamen op die Sort-Object worden gebruikt om de objecten te sorteren. Jokertekens zijn toegestaan.
Objecten worden gesorteerd op basis van de eigenschapswaarden. Als u geen eigenschap opgeeft, Sort-Object sorteert u op basis van standaardeigenschappen voor het objecttype of de objecten zelf.
Gebruik komma's om meerdere eigenschappen te scheiden. Meerdere eigenschappen kunnen worden gesorteerd in oplopende volgorde, aflopende volgorde of een combinatie van sorteervolgordes. Wanneer u meerdere eigenschappen opgeeft, worden de objecten gesorteerd op de eerste eigenschap. Als meerdere objecten dezelfde waarde hebben voor de eerste eigenschap, worden deze objecten gesorteerd op de tweede eigenschap. Dit proces wordt voortgezet totdat er geen opgegeven eigenschappen of groepen objecten meer zijn.
De waarde van de parameter Eigenschap kan een berekende eigenschap zijn. Als u een berekende eigenschap wilt maken, gebruikt u een scriptblok of een hashtabel.
Geldige sleutels voor een hash-tabel zijn als volgt:
expression-<string>of<script block>ascendingofdescending-<boolean>
Zie about_Calculated_Properties voor meer informatie.
| Type: | Object[] |
| Position: | 0 |
| Default value: | Default properties |
| Accept pipeline input: | False |
| Accept wildcard characters: | True |
De gesorteerde objecten worden geleverd in de volgorde waarin ze zijn ontvangen wanneer de sorteercriteria gelijk zijn.
Deze parameter is toegevoegd in PowerShell v6.2.0.
| Type: | SwitchParameter |
| Position: | Named |
| Default value: | None |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Hiermee geeft u het aantal objecten op dat moet worden opgehaald vanaf het begin van een gesorteerde objectmatrix. Dit resulteert in een stabiele sortering.
Deze parameter is geïntroduceerd in PowerShell 6.0.
| Type: | Int32 |
| Position: | Named |
| Default value: | None |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Geeft aan dat Sort-Object duplicaten worden geëlimineerd en alleen de unieke leden van de verzameling worden geretourneerd. Het eerste exemplaar van een unieke waarde wordt opgenomen in de gesorteerde uitvoer.
Uniek is niet hoofdlettergevoelig. Tekenreeksen die alleen verschillen per tekencase, worden als hetzelfde beschouwd. Bijvoorbeeld teken en TEKEN.
| Type: | SwitchParameter |
| Position: | Named |
| Default value: | All |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Invoerwaarden
U kunt de objecten doorsluisen waarnaar Sort-Objectmoet worden gesorteerd.
Uitvoerwaarden
Sort-Object retourneert de gesorteerde objecten.
Notities
De Sort-Object cmdlet sorteert objecten op basis van eigenschappen die zijn opgegeven in de opdracht of de standaard sorteereigenschappen voor het objecttype. Standaardsorteerdeigenschappen worden gedefinieerd met behulp van de PropertySet naam DefaultKeyPropertySet in een types.ps1xml bestand. Zie about_Types.ps1xml voor meer informatie.
Als een object geen van de opgegeven eigenschappen heeft, wordt de eigenschapswaarde voor dat object geïnterpreteerd Sort-Object als Null en aan het einde van de sorteervolgorde geplaatst.
Wanneer er geen sorteereigenschappen beschikbaar zijn, probeert PowerShell de objecten zelf te vergelijken.
Sort-Object gebruikt de methode Vergelijken voor elke eigenschap. Als een eigenschap IComparable niet implementeert, converteert de cmdlet de eigenschapswaarde naar een tekenreeks en gebruikt de methode Vergelijken voor System.String. Zie de methode PSObject.CompareTo(Object) voor meer informatie.
Als u sorteert op een geïnventareerde eigenschap zoals Status, Sort-Object sorteert u op de opsommingswaarden. Voor Windows-services heeft Gestopt een waarde van 1 en Wordt uitgevoerd heeft de waarde 4.
Gestopt wordt gesorteerd voordat wordt uitgevoerd vanwege de geïnventareerde waarden. Zie ServiceControllerStatus voor meer informatie.
De prestaties van het sorteeralgoritmen zijn langzamer bij het uitvoeren van een stabiele sortering.
Verwante koppelingen
Feedback
Feedback verzenden en weergeven voor