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




Inhaltsverzeichnis