Sortiert Objekte nach Eigenschaftenwerten.
Syntax
Sort-Object [[-Eigenschaft] <Object[]>] [-CaseSensitive] [-Culture <string>] [-Descending] [-InputObject <psobject>] [-Unique] [<CommonParameters>]
Beschreibung
Das Cmdlet "Sort-Object" sortiert Objekte in aufsteigender oder absteigender Reihenfolge auf Grundlage der Eigenschaftenwerte des Objekts.
Sie können eine einzelne Eigenschaft oder mehrere Eigenschaften (für eine Sortierung nach mehreren Schlüsseln) angeben und eine Sortierung mit Berücksichtigung der Groß-/Kleinschreibung oder ohne Berücksichtigung der Groß-/Kleinschreibung auswählen. Sie können auch festlegen, dass Sort-Object nur die Objekte mit einem eindeutigen Wert für eine bestimmte Eigenschaft anzeigt.
Parameter
-CaseSensitive
Gibt an, dass bei der Sortierung die Groß-/Kleinschreibung berücksichtigt werden soll. Standardmäßig wird die Groß-/Kleinschreibung bei der Sortierung nicht berücksichtigt.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-Culture <string>
Gibt die beim Sortieren zu verwendende Kulturkonfiguration an.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-Descending
Sortiert die Objekte in absteigender Reihenfolge. Standardmäßig wird eine aufsteigende Reihenfolge verwendet.
Der Descending-Parameter wird auf alle Eigenschaften angewendet. Um die Sortierung nach einigen Eigenschaften
in aufsteigender Reihenfolge und nach anderen Eigenschaften in absteigender Reihenfolge auszuführen, müssen Sie ihre Eigenschaftenwerte mit einer Hashtabelle angeben. Weitere Informationen finden Sie in den Beispielen.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-InputObject <psobject>
Gibt die zu sortierenden Objekte an.
Wenn Sie eine Auflistung von Elementen mithilfe des InputObject-Parameters senden, empfängt Sort-Object ein Objekt, das die Auflistung darstellt. Da ein einzelnes Objekt nicht sortiert werden kann, gibt Sort-Object die gesamte Auflistung unverändert zurück.
Um Objekte zu sortieren, übergeben Sie sie über die Pipeline an Sort-Object.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
true (ByValue) |
Platzhalterzeichen akzeptieren? |
false |
-Eigenschaft <Object[]>
Gibt die beim Sortieren zu verwendenden Eigenschaften an. Objekte werden auf Grundlage der Werte dieser Eigenschaften sortiert. Geben Sie die Namen der Eigenschaften ein. Platzhalter sind zulässig.
Wenn Sie mehrere Eigenschaften angeben, werden die Objekte zunächst nach der ersten Eigenschaft sortiert. Wenn mehrere Objekte für die erste Eigenschaft denselben Wert aufweisen, werden diese Objekte nach der zweiten Eigenschaft sortiert. Dieser Vorgang wird fortgesetzt, bis keine angegebenen Eigenschaften oder Gruppen von Objekten mehr vorhanden sind.
Wenn Sie keine Eigenschaften angeben, sortiert das Cmdlet auf Grundlage von Standardeigenschaften für den Objekttyp.
Bei dem Wert des Property-Parameters kann es sich um eine neu berechnete Eigenschaft handeln. Verwenden Sie zum Erstellen einer berechneten Eigenschaft eine Hashtabelle. Gültige Schlüssel sind:
– Expression <Zeichenfolge> oder <Skriptblock>
– Ascending <boolescher Wert>
– Descending <boolescher Wert>
Erforderlich? |
false |
Position? |
1 |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
true |
-Unique
Entfernt Duplikate und gibt nur die eindeutigen Elemente der Auflistung zurück. Sie können diesen Parameter statt des Cmdlets "Get-Unique" verwenden.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
<CommonParameters>
Dieses Cmdlet unterstützt die folgenden allgemeinen Parameter: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer und -OutVariable. Weitere Informationen finden Sie unter about_Commonparameters.
Eingaben und Ausgaben
Der Eingabetyp ist der Typ der Objekte, die über die Pipeline an das Cmdlet übergeben werden können. Der Rückgabetyp ist der Typ der Objekte, die das Cmdlet zurückgibt.
Eingaben |
System.Management.Automation.PSObject Sie können die zu sortierenden Objekte über die Pipeline an Sort-Object übergeben. |
Ausgaben |
System.Management.Automation.PSObject Sort-Object gibt die sortierten Objekte zurück. |
Hinweise
Sort-Object sortiert Objekte auf Grundlage der von Ihnen angegebenen Eigenschaften oder auf Grundlage der Standardsortiereigenschaften für Objekte dieses Typs.
Wenn ein Objekt über eine der angegebenen Eigenschaften nicht verfügt, wird der entsprechende Eigenschaftenwert für dieses Objekt vom Cmdlet als NULL interpretiert und am Ende der Sortierreihenfolge angeordnet.
Beim Sortieren von Objekten verwendet Sort-Object die Compare-Methode für jede Eigenschaft. Wenn eine Eigenschaft "IComparable" nicht implementiert, konvertiert das Cmdlet den Eigenschaftenwert in eine Zeichenfolge und verwendet die Compare-Methode für System.String.
Das Cmdlet "Sort-Object" sortiert Objekte in aufsteigender oder absteigender Reihenfolge auf Grundlage der Eigenschaftenwerte des Objekts.
Wenn Sie nach einer Eigenschaft sortieren, deren Wert eine Aufzählung ist, sortiert Sort-Object die Aufzählungswerte in numerischer Reihenfolge; die Namen der Aufzählungselemente werden nicht sortiert. Wenn Sie z. B. Dienste nach Status sortieren, werden Dienste mit dem Status "Stopped" vor Diensten mit dem Status "Running" angezeigt, da der Wert von "Status" eine ServiceControllerStatus-Auflistung ist, in der "Stopped" den Wert 1 und "Running" den Wert 4 aufweist.
Beispiel 1
C:\PS>get-childitem | sort-object Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 9/13/2005 4:24 PM 0 0 -a--- 9/6/2005 4:19 PM 12 a.csv -a--- 9/21/2005 3:49 PM 529 a.Ps -a--- 8/22/2005 4:14 PM 22 a.pl -a--- 9/27/2005 10:33 AM 24 a.txt -a--- 9/15/2005 10:31 AM 398 a.vbs -a--- 7/21/2005 12:39 PM 37066 a.xml -a--- 8/28/2005 11:30 PM 5412 a.xslt -a--- 10/25/2005 1:59 PM 125 AdamTravel.txt -a--- 7/21/2005 9:49 AM 59 add2Num.Ps -a--- 8/29/2005 5:42 PM 7111 add-content.xml -a--- 9/21/2005 12:46 PM 8771 aliens.Ps -a--- 8/10/2005 2:10 PM 798 array.xml -a--- 8/4/2004 5:00 AM 110 AUTORUN.INF -a--- 9/6/2005 4:20 PM 245 b.csv ... Beschreibung ----------- Mit diesem Befehl werden die Unterverzeichnisse und Dateien im aktuellen Verzeichnis sortiert. Da keine Eigenschaften angegeben sind, werden die Dateien und Verzeichnisse in aufsteigender alphabetischer Reihenfolge nach ihrer Standardsortiereigenschaft "Name" sortiert.
Beispiel 2
C:\PS>get-childitem | sort-object -property length Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 12/3/2006 5:35 PM 2 pref.txt -a--- 9/6/2006 3:33 PM 15 count.txt -a--- 7/26/2006 10:01 AM 30 filenoext -a--- 8/18/2006 9:02 AM 52 temp.ps1 -a--- 8/18/2006 9:02 AM 52 temp.msh -a--- 9/6/2006 3:33 PM 56 fivewords.txt -a--- 7/26/2006 9:28 AM 80 date.csv -a--- 7/29/2006 7:15 PM 84 test2.txt -a--- 7/29/2006 7:15 PM 84 test.ps1 Beschreibung ----------- Mit diesem Befehl werden die Dateien im aktuellen Verzeichnis in aufsteigender Reihenfolge nach Dateilänge angezeigt.
Beispiel 3
C:\PS>get-process | sort-object -property WS | select-object -last 5 Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 1105 25 44236 18932 197 93.81 2032 iexplore 2526 66 37668 36836 221 393.27 868 svchost 974 19 22844 45928 371 88.39 3952 WINWORD 1371 22 42192 61872 323 75.75 1584 INFOPATH 2145 58 93088 70680 619 396.69 3908 OUTLOOK Beschreibung ----------- Mit diesem Befehl werden die fünf Prozesse auf dem Computer mit der größten Speicherauslastung auf Grundlage der Größe ihrer Workingsets angezeigt. Der Befehl ruft eine Liste von Prozessen mit dem Cmdlet "Get-Process" ab. Die Ergebnisse werden mithilfe eines Pipelineoperators (|) an das Cmdlet "Sort-Object" gesendet, das die Objekte nach Workingsets sortiert. Mit einem weiteren Pipelineoperator werden die Ergebnisse an Select-Object gesendet, das nur die letzten fünf Elemente in der Liste anzeigt.
Beispiel 4
C:\PS>get-history | sort-object -descending Id CommandLine -- ----------- 51 get-history | sort -descending 50 get-history | sort -descending 49 get-history | sort -descending 48 get-history | sort -descending 47 get-history | sort -descending 46 get-history | sort -descending 45 get-history | sort -descending 44 cd $pshome 43 get-childitem | sort-object 42 gci *.txt Beschreibung ----------- Mit diesem Befehl werden HistoryInfo-Objekte mit der Id-Eigenschaft als Standardschlüssel sortiert.
Beispiel 5
C:\PS>C:\PS> get-service | sort-object -property ` @{Expression="Status";Descending=$true}, ` @{Expression="DisplayName";Descending=$false} Status Name DisplayName ------ ---- ----------- Running ALG Application Layer Gateway Service Running Ati HotKey Poller Ati HotKey Poller Running wuauserv Automatic Updates Running BITS Background Intelligent Transfer Ser... Running Client for NFS Client for NFS ... Stopped clr_optimizatio... .NET Runtime Optimization Service v... Stopped Alerter Alerter Stopped AppMgmt Application Management Stopped aspnet_state ASP.NET State Service Stopped ATI Smart ATI Smart Stopped ClipSrv ClipBook Beschreibung ----------- Mit diesem Befehl werden die Dienste auf dem Computer in absteigender Reihenfolge nach Status und in aufsteigender Reihenfolge nach DisplayName angezeigt. Der Befehl verwendet das Cmdlet "Get-Service", um die Dienste auf dem Computer abzurufen. Die Dienste werden mit einem Pipelineoperator (|) an das Cmdlet "Sort-Object" gesendet. Um eine Eigenschaft in aufsteigender Reihenfolge und eine andere Eigenschaft in absteigender Reihenfolge zu sortieren, verwendet der Befehl als Wert des Property-Parameters eine Hashtabelle. In der Hashtabelle wird der Eigenschaftenname mit dem Schlüssel "Expression" und die Sortierreihenfolge mit dem Schlüssel "Ascending" oder "Descending" angegeben. In der resultierenden Anzeige, in der die Status-Werte in absteigender Reihenfolge sortiert sind, werden die Eigenschaften mit dem Status-Wert "Running" vor den Eigenschaften mit dem Status-Wert "Stopped" aufgeführt. Bei einer Sortierung in aufsteigender Reihenfolge wird "Stopped" vor "Running" angezeigt, weil Status eine Enumerationseigenschaft ist, deren Wert "Stopped" (1) kleiner als ihr Wert "Running" (4) ist.
Beispiel 6
C:\PS>get-childitem *.txt | sort-object -property @{Expression={$_.LastWriteTime - $_.CreationTime}; Ascending=$false} | Format-Table LastWriteTime, CreationTime LastWriteTime CreationTime ------------- ------------ 2/21/2006 10:22:20 AM 10/3/2005 4:19:40 PM 2/27/2006 8:14:24 AM 2/23/2006 10:41:08 PM 2/24/2006 1:26:19 PM 2/23/2006 11:23:36 PM 1/5/2006 12:01:35 PM 1/5/2006 11:35:30 AM 2/24/2006 9:25:40 AM 2/24/2006 9:22:24 AM 2/24/2006 9:40:01 AM 2/24/2006 9:39:41 AM 2/21/2006 10:21:30 AM 2/21/2006 10:21:30 AM Beschreibung ----------- Mit diesem Befehl werden Textdateien in absteigender Reihenfolge nach der Zeitspanne zwischen "CreationTime" und "LastWriteTime" sortiert.
Beispiel 7
C:\PS>get-content servers.txt localhost test01 server01 server02 localhost server01 C:\PS> get-content servers.txt | sort-object -unique localhost server01 server02 test01 Beschreibung ----------- Mit diesen Befehlen werden die Namen von Servern in einer Textdatei sortiert. Im zweiten Befehl wird das Cmdlet "Sort-Object" mit dem Unique-Parameter verwendet, um eine sortierte Liste ohne Duplikate zurückzugeben.
Siehe auch