Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wir können angezeigte Daten organisieren, um die Überprüfung mithilfe des Sort-Object Cmdlets zu vereinfachen.
Sort-Object verwendet den Namen einer oder mehrerer Eigenschaften, nach denen sortiert werden soll, und gibt Daten zurück, die nach den Werten dieser Eigenschaften sortiert sind.
Grundlegende Sortierung
Berücksichtigen Sie das Problem beim Auflisten von Unterverzeichnissen und Dateien im aktuellen Verzeichnis. Wenn wir nach LastWriteTime und dann nach Name sortieren möchten, können wir dies tun, indem wir Folgendes eingeben:
Get-ChildItem |
Sort-Object -Property LastWriteTime, Name |
Format-Table -Property LastWriteTime, Name
LastWriteTime Name
------------- ----
11/6/2017 10:10:11 AM .localization-config
11/6/2017 10:10:11 AM .openpublishing.build.ps1
11/6/2017 10:10:11 AM appveyor.yml
11/6/2017 10:10:11 AM LICENSE
11/6/2017 10:10:11 AM LICENSE-CODE
11/6/2017 10:10:11 AM ThirdPartyNotices
11/6/2017 10:10:15 AM tests
6/6/2018 7:58:59 PM CONTRIBUTING.md
6/6/2018 7:58:59 PM README.md
...
Sie können die Objekte auch in umgekehrter Reihenfolge sortieren, indem Sie den Absteigenden[switch] Parameter angeben.
Get-ChildItem |
Sort-Object -Property LastWriteTime, Name -Descending |
Format-Table -Property LastWriteTime, Name
LastWriteTime Name
------------- ----
12/1/2018 10:13:50 PM reference
12/1/2018 10:13:50 PM dsc
...
6/6/2018 7:58:59 PM README.md
6/6/2018 7:58:59 PM CONTRIBUTING.md
11/6/2017 10:10:15 AM tests
11/6/2017 10:10:11 AM ThirdPartyNotices
11/6/2017 10:10:11 AM LICENSE-CODE
11/6/2017 10:10:11 AM LICENSE
11/6/2017 10:10:11 AM appveyor.yml
11/6/2017 10:10:11 AM .openpublishing.build.ps1
11/6/2017 10:10:11 AM .localization-config
Verwenden von Hashtabellen
Sie können unterschiedliche Eigenschaften in unterschiedlichen Reihenfolgen mithilfe von Hashtabellen in einem Array sortieren. Jede Hashtabelle verwendet einen Ausdrucksschlüssel , um den Eigenschaftsnamen als Zeichenfolge und einen aufsteigenden oder absteigenden Schlüssel anzugeben, um die Sortierreihenfolge nach $true oder $false. Der Expression-Schlüssel ist obligatorisch. Die Aufsteigende oder absteigende Taste ist optional.
Im folgenden Beispiel werden Objekte in absteigender LastWriteTime-Reihenfolge und aufsteigender Namensreihenfolge sortiert.
Get-ChildItem |
Sort-Object -Property @{ Expression = 'LastWriteTime'; Descending = $true },
@{ Expression = 'Name'; Ascending = $true } |
Format-Table -Property LastWriteTime, Name
LastWriteTime Name
------------- ----
12/1/2018 10:13:50 PM dsc
12/1/2018 10:13:50 PM reference
11/29/2018 6:56:01 PM .openpublishing.redirection.json
11/29/2018 6:56:01 PM gallery
11/24/2018 10:33:22 AM developer
11/20/2018 7:22:19 PM .markdownlint.json
...
Sie können auch einen Skriptblock für den Expression-Schlüssel festlegen. Beim Ausführen des Sort-Object Cmdlets wird der Scriptblock ausgeführt, und das Ergebnis wird für die Sortierung verwendet.
Im folgenden Beispiel werden Objekte in absteigender Reihenfolge nach der Zeitspanne zwischen CreationTime und LastWriteTime sortiert.
Get-ChildItem |
Sort-Object -Property @{ Exp = { $_.LastWriteTime - $_.CreationTime }; Desc = $true } |
Format-Table -Property LastWriteTime, CreationTime
LastWriteTime CreationTime
------------- ------------
12/1/2018 10:13:50 PM 11/6/2017 10:10:11 AM
12/1/2018 10:13:50 PM 11/6/2017 10:10:11 AM
11/7/2018 6:52:24 PM 11/6/2017 10:10:11 AM
11/7/2018 6:52:24 PM 11/6/2017 10:10:15 AM
11/3/2018 9:58:17 AM 11/6/2017 10:10:11 AM
10/26/2018 4:50:21 PM 11/6/2017 10:10:11 AM
11/17/2018 1:10:57 PM 11/29/2017 5:48:30 PM
11/12/2018 6:29:53 PM 12/7/2017 7:57:07 PM
...
Tipps
Sie können den Parameternamen "Property" wie folgt weglassen:
Sort-Object LastWriteTime, Name
Darüber hinaus können Sie sich auf Sort-Object mit dessen integriertem Alias, sort, beziehen.
sort LastWriteTime, Name
Die Schlüssel in den Hashtabellen für die Sortierung können wie folgt abgekürzt werden:
Sort-Object @{ e = 'LastWriteTime'; d = $true }, @{ e = 'Name'; a = $true }
In diesem Beispiel steht "e" für "Ausdruck","d" steht für "Absteigend", und "a" steht für "Aufsteigend".
Um die Lesbarkeit zu verbessern, können Sie die Hashtabellen in eine separate Variable einfügen:
$order = @(
@{ Expression = 'LastWriteTime'; Descending = $true }
@{ Expression = 'Name'; Ascending = $true }
)
Get-ChildItem |
Sort-Object $order |
Format-Table LastWriteTime, Name