Sort-Object
Objecten sorteren op eigenschapswaarden.
Syntax
Sort-Object
[[-Property] <Object[]>]
[-Descending]
[-Unique]
[-InputObject <psobject>]
[-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 standaardsorteringseigenschappen.
U kunt objecten sorteren op één eigenschap of meerdere eigenschappen. Meerdere eigenschappen gebruiken hash-tabellen om te sorteren in oplopende volgorde, aflopende volgorde of een combinatie van sorteervolgordes. Eigenschappen worden gesorteerd als hoofdlettergevoelig of niet-hoofdlettergevoelig. Gebruik de parameter Unique om duplicaten uit de uitvoer te verwijderen.
Voorbeelden
Voorbeeld 1: De huidige map sorteren op naam
Met deze opdracht worden de bestanden en submappen in een map gesorteerd.
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
De Get-ChildItem
cmdlet haalt de bestanden en submappen op uit de map die is opgegeven door de path-parameter, C:\Test. De objecten worden via de pijplijn naar de Sort-Object
cmdlet verzonden.
Sort-Object
geeft geen eigenschap op, zodat de uitvoer wordt gesorteerd op de standaardsorteereigenschap , Naam.
Voorbeeld 2: De huidige map sorteren op bestandslengte
Met deze opdracht worden de bestanden in de huidige map weergegeven op lengte in oplopende volgorde.
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
De Get-ChildItem
cmdlet haalt de bestanden op uit de map die is opgegeven door de path parameter .
De parameter Bestand geeft aan dat Get-ChildItem
alleen bestandsobjecten worden opgehaald. De objecten worden via de pijplijn naar de Sort-Object
cmdlet verzonden. Sort-Object
gebruikt de parameter Length om de bestanden op lengte in oplopende volgorde te sorteren.
Voorbeeld 3: Processen sorteren op geheugengebruik
In dit voorbeeld worden processen weergegeven met het hoogste geheugengebruik op basis van de grootte van hun werkset (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
De Get-Process
cmdlet haalt de lijst met processen op die op de computer worden uitgevoerd. De procesobjecten worden via de pijplijn naar de Sort-Object
cmdlet verzonden. Sort-Object
gebruikt de parameter Eigenschap om de objecten te sorteren op WS. De objecten worden via de pijplijn naar de Select-Object
cmdlet verzonden.
Select-Object
gebruikt de parameter Last om de laatste vijf objecten op te geven. Dit zijn de objecten met het hoogste WS-gebruik .
Voorbeeld 4: HistoryInfo-objecten 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.
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\
De Get-History
cmdlet haalt de geschiedenisobjecten op uit de huidige PowerShell-sessie. De objecten worden via de pijplijn naar de Sort-Object
cmdlet verzonden. Sort-Object
gebruikt de parameter Eigenschap om de objecten te sorteren op id. De parameter Aflopend sorteert de opdrachtgeschiedenis van nieuw naar oud.
Voorbeeld 5: Een hashtabel gebruiken om eigenschappen in oplopende en aflopende volgorde te sorteren
Met deze opdracht worden twee eigenschappen gebruikt om de objecten te sorteren: Status en DisplayName. De status wordt in aflopende volgorde gesorteerd en DisplayName wordt in oplopende volgorde gesorteerd.
Er wordt een hashtabel gebruikt om de waarde van de parameter Eigenschap 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.
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
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 hashtabel om de eigenschapsnamen en sorteervolgordes op te geven. De parameter Property is gesorteerd op twee eigenschappen: Status in aflopende volgorde en DisplayName in oplopende volgorde.
Status is een geïnventareerde eigenschap. Gestopt heeft de waarde 1 en Uitvoeren heeft de waarde 4. De parameter Aflopend is ingesteld op $True
, zodat Actieve processen worden weergegeven vóór gestopte processen. DisplayName stelt de parameter Aflopend in op $False
om de weergavenamen in alfabetische volgorde te sorteren.
Voorbeeld 6: Tekstbestanden sorteren op tijdsspanne
Met deze opdracht worden tekstbestanden in aflopende volgorde gesorteerd op de tijdsduur tussen CreationTime en 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
De Get-ChildItem
cmdlet gebruikt de parameter Path om de map C:\Test en alle *.txt
bestanden op te geven. De objecten worden via de pijplijn naar de Sort-Object
cmdlet verzonden.
Sort-Object
gebruikt de parameter Property met een hashtabel om de tijdsduur van elke bestand tussen CreationTime en LastWriteTime te bepalen. De parameter Aflopend is ingesteld op $False
om te sorteren in de volgorde van langste naar kortste tijdsperiode.
Voorbeeld 7: Namen in een tekstbestand sorteren
In dit voorbeeld ziet u hoe u een lijst sorteert op basis van een tekstbestand. Het oorspronkelijke bestand wordt weergegeven als een niet-gesorteerde lijst. Sort-Object
sorteert de inhoud en sorteert de inhoud vervolgens met de parameter Uniek waarmee dubbele waarden worden verwijderd.
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
De Get-Content
cmdlet gebruikt de parameter Path om de map en de 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 de bestandsnaam op te geven. Het bestand ServerNames.txt bevat een niet-gesorteerde lijst met computernamen. De objecten worden via de pijplijn naar de Sort-Object
cmdlet verzonden. Sort-Object
sorteert de lijst in de standaardvolgorde, oplopend.
De Get-Content
cmdlet gebruikt de parameter Path om de map en de bestandsnaam op te geven. Het bestand ServerNames.txt bevat een niet-gesorteerde lijst met computernamen. De objecten worden via de pijplijn naar de Sort-Object
cmdlet verzonden. Sort-Object
gebruikt de parameter Unique 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 met tekenreeksobjecten als gehele getallen sorteert. U kunt elke opdracht in de pijplijn verzenden naar Get-Member
en controleren of de objecten tekenreeksen of gehele getallen zijn.
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
De Get-Content
cmdlet gebruikt de parameter Path om de map en de bestandsnaam op te geven. Het bestand ProductId.txt bevat een niet-gesorteerde lijst met productnummers. De tekenreeksobjecten worden in de pijplijn naar de Sort-Object
cmdlet verzonden. Sort-Object
sorteert de tekenreeksobjecten in oplopende volgorde.
De Get-Content
cmdlet gebruikt de parameter Path om de map en de bestandsnaam op te geven. Het bestand ProductId.txt bevat een niet-gesorteerde lijst met productnummers. De tekenreeksobjecten worden in de pijplijn naar de ForEach-Object
cmdlet verzonden. ForEach-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 wanneer deze in de pijplijn komt. De gehele objecten worden in de pijplijn naar de Sort-Object
cmdlet verzonden. Sort-Object
sorteert de gehele objecten in numerieke volgorde.
Parameters
-CaseSensitive
Geeft aan dat de sortering hoofdlettergevoelig is. Standaard zijn sorteringen niet hoofdlettergevoelig.
Type: | SwitchParameter |
Position: | Named |
Default value: | Case-insensitive |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Culture
Hiermee geeft u de culturele configuratie te gebruiken voor sorteringen. Gebruik Get-Culture
om de cultuurconfiguratie van het systeem weer te geven.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Descending
Hiermee wordt aangegeven 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 hashtabel. Met een hashtabel kunt u bijvoorbeeld één eigenschap in oplopende volgorde en een andere eigenschap in aflopende volgorde sorteren.
Type: | SwitchParameter |
Position: | Named |
Default value: | Ascending |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Als u objecten wilt sorteren, verzendt u ze in de pijplijn naar 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 |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Property
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.
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 gaat door totdat er geen opgegeven eigenschappen of groepen objecten meer zijn opgegeven.
De waarde van de parameter Eigenschap kan een berekende eigenschap zijn. Als u een berekende eigenschap wilt maken, gebruikt u een hash-tabel.
Geldige sleutels voor een hash-tabel zijn als volgt:
- Expressietekenreeks <> of <scriptblok>
- Oplopende <Booleaanse waarde>
- Aflopend <Booleaanse waarde>
Type: | Object[] |
Position: | 0 |
Default value: | Default properties |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Unique
Hiermee wordt aangegeven dat Sort-Object
dubbele waarden 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 teken, worden als hetzelfde beschouwd. Bijvoorbeeld teken en TEKEN.
Type: | SwitchParameter |
Position: | Named |
Default value: | All |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Invoerwaarden
U kunt de objecten die moeten worden gesorteerd doorsluist naar Sort-Object
.
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 standaardsorteereigenschappen voor het objecttype. Als een object niet een 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.
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 Compare voor System.String. Zie METHODE PSObject.CompareTo(Object) voor meer informatie.
Als u sorteert op een geïnventareerde eigenschap, zoals Status, Sort-Object
wordt gesorteerd op de opsommingswaarden. Gestopt heeft de waarde 1 en Uitvoeren heeft de waarde 4. Gestopt wordt gesorteerd vóór Uitvoering vanwege de geïnventareerde waarden. Zie ServiceControllerStatus voor meer informatie.