Sort-Object
Sortiert Objekte nach Eigenschaftswerten.
Syntax
Default (Standard)
Sort-Object
[[-Property] <Object[]>]
[-Descending]
[-Unique]
[-InputObject <psobject>]
[-Culture <string>]
[-CaseSensitive]
[<CommonParameters>]
Beschreibung
Das cmdlet Sort-Object sortiert Objekte in aufsteigender oder absteigender Reihenfolge basierend auf Objekteigenschaftswerten. Wenn Sortiereigenschaften nicht in einem Befehl enthalten sind, verwendet PowerShell Standardsortiereigenschaften.
Sie können Objekte nach einer einzelnen Eigenschaft oder mehreren Eigenschaften sortieren. Mehrere Eigenschaften verwenden Hashtabellen zum Sortieren in aufsteigender Reihenfolge, absteigender Reihenfolge oder einer Kombination aus Sortierreihenfolgen. Eigenschaften werden nach Groß-/Kleinschreibung oder Groß-/Kleinschreibung sortiert. Verwenden Sie den Parameter Eindeutig , um Duplikate aus der Ausgabe zu entfernen.
Beispiele
Beispiel 1: Sortieren des aktuellen Verzeichnisses nach Name
Dieser Befehl sortiert die Dateien und Unterverzeichnisse in einem Verzeichnis.
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
Das Get-ChildItem Cmdlet ruft die Dateien und Unterverzeichnisse aus dem Verzeichnis ab, das durch den Path-ParameterC:\Test angegeben wird. Die Objekte werden an das Cmdlet Sort-Object weitergeleitet.
Sort-Object Gibt keine Eigenschaft an, sodass die Ausgabe nach der Standardsortiereigenschaft Name sortiert wird.
Beispiel 2: Sortieren des aktuellen Verzeichnisses nach Dateilänge
Mit diesem Befehl werden die Dateien im aktuellen Verzeichnis nach Länge in aufsteigender Reihenfolge angezeigt.
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
Das Cmdlet Get-ChildItem ruft die Dateien aus dem Verzeichnis ab, das durch den parameter Path angegeben wird.
Der parameter File gibt an, dass Get-ChildItem nur Dateiobjekte abruft. Die Objekte werden an das Cmdlet Sort-Object weitergeleitet.
Sort-Object verwendet den Parameter Length, um die Dateien in aufsteigender Reihenfolge nach Länge zu sortieren.
Beispiel 3: Sortieren von Prozessen nach Speicherauslastung
In diesem Beispiel werden Prozesse mit der höchsten Speicherauslastung basierend auf ihrer Arbeitssatzgröße (WS) angezeigt.
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
Das Cmdlet Get-Process ruft die Liste der Prozesse ab, die auf dem Computer ausgeführt werden. Die Prozessobjekte werden an das Cmdlet Sort-Object weitergeleitet.
Sort-Object verwendet den Parameter Property, um die Objekte nach WS-zu sortieren. Die Objekte werden an das Cmdlet Select-Object weitergeleitet.
Select-Object verwendet den Parameter Last, um die letzten fünf Objekte anzugeben, bei denen es sich um die Objekte mit der höchsten WS--Verwendung handelt.
Beispiel 4: Sortieren von HistoryInfo-Objekten nach ID
Mit diesem Befehl werden die History Info-Objekte der PowerShell-Sitzung mithilfe der eigenschaft Id sortiert. Jede PowerShell-Sitzung verfügt über einen eigenen Befehlsverlauf.
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\
Das Cmdlet Get-History ruft die Verlaufsobjekte aus der aktuellen PowerShell-Sitzung ab. Die Objekte werden an das Cmdlet Sort-Object weitergeleitet.
Sort-Object verwendet den Parameter Property, um die Objekte nach ID-zu sortieren. Der parameter Descending sortiert den Befehlsverlauf von der neuesten zur ältesten.
Beispiel 5: Verwenden einer Hashtabelle zum Sortieren von Eigenschaften in aufsteigender und absteigender Reihenfolge
Dieser Befehl verwendet zwei Eigenschaften zum Sortieren der Objekte: Status und DisplayName. Status- wird in absteigender Reihenfolge sortiert, und DisplayName- in aufsteigender Reihenfolge sortiert wird.
Eine Hashtabelle wird verwendet, um den Wert des Property Parameters anzugeben. Die Hashtabelle verwendet einen Ausdruck, um die Eigenschaftennamen und Sortierreihenfolgen anzugeben. Weitere Informationen zu Hashtabellen finden Sie unter about_Hash_Tables (Informationen zu Hashtabellen).
Die in der Hashtabelle verwendete Status-eigenschaft ist eine aufgezählte Eigenschaft. Weitere Informationen finden Sie unter 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
Das Cmdlet Get-Service ruft die Liste der Dienste auf dem Computer ab. Die Dienstobjekte werden an das Cmdlet Sort-Object weitergeleitet.
Sort-Object verwendet den Parameter Property mit einer Hashtabelle, um die Eigenschaftennamen und Sortierreihenfolgen anzugeben. Der parameter Property wird nach zwei Eigenschaften sortiert, Status in absteigender Reihenfolge und DisplayName- in aufsteigender Reihenfolge.
Status- ist eine aufgezählte Eigenschaft.
Stopped hat den Wert 1 und Running einen Wert von 4hat. Der Parameter Descending wird auf $True festgelegt, sodass Ausführen von Prozessen angezeigt werden, bevor Prozesse beendet werden.
DisplayName- legt den Parameter Descending auf $False fest, um die Anzeigenamen in alphabetischer Reihenfolge zu sortieren.
Beispiel 6: Sortieren von Textdateien nach Zeitspanne
Mit diesem Befehl werden Textdateien in absteigender Reihenfolge nach der Zeitspanne zwischen CreationTime- und LastWriteTime-sortiert.
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
Das Get-ChildItem Cmdlet verwendet den Parameter Path , um das Verzeichnis C:\Test und alle *.txt Dateien anzugeben. Die Objekte werden an das Cmdlet Sort-Object weitergeleitet.
Sort-Object verwendet den Property-Parameter mit einer Hashtabelle, um die Zeitspanne der einzelnen Dateien zwischen CreationTime und LastWriteTime zu bestimmen. Der Parameter Absteigend ist so eingestellt, dass $False in der Reihenfolge der längsten bis kürzesten Zeitspanne sortiert wird.
Beispiel 7: Sortieren von Namen in einer Textdatei
In diesem Beispiel wird gezeigt, wie eine Liste aus einer Textdatei sortiert wird. Die Originaldatei wird als nicht sortierte Liste angezeigt.
Sort-Object sortiert den Inhalt und sortiert dann den Inhalt mit dem Parameter Unique, der Duplikate entfernt.
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
Das Get-Content Cmdlet verwendet den Parameter Path , um das Verzeichnis und den Dateinamen anzugeben. Die Datei enthältServerNames.txt eine unsortierte Liste von Computernamen.
Das Get-Content Cmdlet verwendet den Parameter Path , um das Verzeichnis und den Dateinamen anzugeben. Die Datei enthältServerNames.txt eine unsortierte Liste von Computernamen. Die Objekte werden an das Cmdlet Sort-Object weitergeleitet.
Sort-Object sortiert die Liste in der Standardreihenfolge aufsteigend.
Das Get-Content Cmdlet verwendet den Parameter Path , um das Verzeichnis und den Dateinamen anzugeben. Die Datei enthältServerNames.txt eine unsortierte Liste von Computernamen. Die Objekte werden an das Cmdlet Sort-Object weitergeleitet.
Sort-Object verwendet den Parameter Unique, um doppelte Computernamen zu entfernen. Die Liste wird in der Standardreihenfolge aufsteigend sortiert.
Beispiel 8: Sortieren einer Zeichenfolge als ganze Zahl
In diesem Beispiel wird gezeigt, wie Sie eine Textdatei sortieren, die Zeichenfolgenobjekte als ganze Zahlen enthält. Sie können jeden Befehl in der Pipeline Get-Member an senden und überprüfen, ob es sich bei den Objekten um Zeichenfolgen oder ganze Zahlen handelt.
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
Das Get-Content Cmdlet verwendet den Parameter Path , um das Verzeichnis und den Dateinamen anzugeben. Die Datei enthältProductId.txt eine unsortierte Liste von Produktnummern. Die Zeichenfolgenobjekte werden über die Pipeline an das Sort-Object Cmdlet gesendet.
Sort-Object sortiert die Zeichenfolgenobjekte in aufsteigender Reihenfolge.
Das Get-Content Cmdlet verwendet den Parameter Path , um das Verzeichnis und den Dateinamen anzugeben. Die Datei enthältProductId.txt eine unsortierte Liste von Produktnummern. Die Zeichenfolgenobjekte werden über die Pipeline an das ForEach-Object Cmdlet gesendet.
ForEach-Object verwendet einen Skriptblock, um die Zeichenfolgen in ganze Zahlen zu konvertieren. Im Beispielcode konvertiert [int] die Zeichenfolge in eine ganze Zahl und $_ jede Zeichenfolge darstellt, wie sie in die Pipeline fällt. Die ganzzahligen Objekte werden an das Cmdlet Sort-Object weitergeleitet.
Sort-Object sortiert die ganzzahligen Objekte in numerischer Reihenfolge.
Parameter
-CaseSensitive
Gibt an, dass bei der Sortierung die Groß-/Kleinschreibung beachtet wird. Standardmäßig wird bei Sortierungen nicht zwischen Groß- und Kleinschreibung unterschieden.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | Case-insensitive |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Culture
Gibt die kulturelle Konfiguration an, die für Sortierungen verwendet werden soll. Verwenden Sie Get-Culture, um die Systemkulturkonfiguration anzuzeigen.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Descending
Gibt an, dass Sort-Object die Objekte in absteigender Reihenfolge sortiert. Der Standardwert ist die aufsteigende Reihenfolge.
Verwenden Sie eine Hashtabelle, um mehrere Eigenschaften mit unterschiedlichen Sortierreihenfolgen zu sortieren. Beispielsweise können Sie mit einer Hashtabelle eine Eigenschaft in aufsteigender Reihenfolge und eine andere Eigenschaft in absteigender Reihenfolge sortieren.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | Ascending |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-InputObject
Um Objekte zu sortieren, senden Sie sie an Sort-Objectnach unten. Wenn Sie den parameter InputObject verwenden, um eine Auflistung von Elementen zu übermitteln, empfängt Sort-Object ein Objekt, das die Auflistung darstellt. Da ein Objekt nicht sortiert werden kann, Sort-Object wird die gesamte Auflistung unverändert zurückgegeben.
Parametereigenschaften
| Typ: | PSObject |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | True |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Property
Gibt die Eigenschaftennamen an, die Sort-Object zum Sortieren der Objekte verwendet. Wildcards sind zulässig.
Objekte werden basierend auf den Eigenschaftswerten sortiert. Wenn Sie keine Eigenschaft angeben, Sort-Object wird basierend auf den Standardeigenschaften für den Objekttyp sortiert.
Mehrere Eigenschaften können in aufsteigender Reihenfolge, absteigender Reihenfolge oder einer Kombination von Sortierreihenfolgen sortiert werden. Wenn Sie mehrere Eigenschaften angeben, werden die Objekte nach der ersten Eigenschaft sortiert. Wenn mehrere Objekte denselben Wert für die erste Eigenschaft haben, werden diese Objekte nach der zweiten Eigenschaft sortiert. Dieser Vorgang wird fortgesetzt, bis keine weiteren angegebenen Eigenschaften oder keine Gruppen von Objekten vorhanden sind.
Der Wert des Property Parameters kann eine berechnete Eigenschaft sein. Verwenden Sie zum Erstellen einer berechneten Eigenschaft eine Hashtabelle.
Gültige Schlüssel für eine Hashtabelle sind wie folgt:
- Ausdruck <Zeichenfolge> oder <Skriptblocks>
- Aufsteigender <Boolescher Wert>
- Absteigender <boolescher Wert>
Parametereigenschaften
| Typ: | Object[] |
| Standardwert: | Default properties |
| Unterstützt Platzhalter: | True |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | 0 |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Unique
Gibt an, dass Sort-Object Duplikate eliminiert und nur die eindeutigen Elemente der Auflistung zurückgibt. Die erste Instanz eines eindeutigen Werts ist in der sortierten Ausgabe enthalten.
Eindeutigen wird die Groß-/Kleinschreibung nicht beachtet. Zeichenfolgen, die sich nur je nach Zeichenfall unterscheiden, werden als identisch betrachtet. Beispiel: Zeichen und ZEICHEN.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | All |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
CommonParameters
Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.
Eingaben
PSObject
Sie können die Objekte, die sortiert werden sollen, über die Pipeline an Sort-Object.
Ausgaben
PSObject
Sort-Object Gibt die sortierten Objekte zurück.
Hinweise
Das cmdlet Sort-Object sortiert Objekte basierend auf eigenschaften, die im Befehl angegeben sind, oder die Standardsortiereigenschaften für den Objekttyp. Wenn ein Objekt nicht über eine der angegebenen Eigenschaften verfügt, wird der Eigenschaftswert für dieses Objekt als Sort-Object interpretiert und am Ende der Sortierreihenfolge platziert.
Sort-Object verwendet die Compare-Methode für jede Eigenschaft. Wenn IComparable von einer Eigenschaft nicht implementiert wird, konvertiert das Cmdlet den Eigenschaftswert in eine Zeichenfolge und verwendet die Compare-Methode für System.String. Weitere Informationen finden Sie unter PSObject.CompareTo(Object) Method.
Wenn Sie nach einer aufgezählten Eigenschaft wie Statussortieren, werden Sort-Object nach den Enumerationswerten sortiert.
Stopped hat den Wert 1 und Running einen Wert von 4hat.
Beendete wird vor Ausführen aufgrund der aufgezählten Werte sortiert. Weitere Informationen finden Sie unter ServiceControllerStatus-.