Sort-Object

Objektumok rendezése tulajdonságértékek szerint.

Syntax

Sort-Object
    [-Stable]
    [-Descending]
    [-Unique]
    [-InputObject <PSObject>]
    [[-Property] <Object[]>]
    [-Culture <String>]
    [-CaseSensitive]
    [<CommonParameters>]
Sort-Object
    [-Descending]
    [-Unique]
    -Top <Int32>
    [-InputObject <PSObject>]
    [[-Property] <Object[]>]
    [-Culture <String>]
    [-CaseSensitive]
    [<CommonParameters>]
Sort-Object
    [-Descending]
    [-Unique]
    -Bottom <Int32>
    [-InputObject <PSObject>]
    [[-Property] <Object[]>]
    [-Culture <String>]
    [-CaseSensitive]
    [<CommonParameters>]

Description

A Sort-Object parancsmag növekvő vagy csökkenő sorrendben rendezi az objektumokat az objektumtulajdonságok értékei alapján. Ha a rendezési tulajdonságok nem szerepelnek a parancsokban, a PowerShell az első bemeneti objektum alapértelmezett rendezési tulajdonságait használja. Ha a bemeneti objektum típusa nem rendelkezik alapértelmezett rendezési tulajdonságokkal, a PowerShell megpróbálja összehasonlítani az objektumokat. További információkért lásd a Jegyzetek szakaszt.

Az objektumokat egyetlen vagy több tulajdonság szerint rendezheti. Több tulajdonság kivonattáblákkal növekvő sorrendben, csökkenő sorrendben vagy rendezési sorrendben rendezhető. A tulajdonságok kis- és nagybetűk megkülönböztetése vagy érzéketlenként vannak rendezve. Az Egyedi paraméter használatával eltávolíthatja az ismétlődéseket a kimenetből.

Példák

1. példa: Az aktuális könyvtár rendezése név szerint

Ez a példa egy könyvtár fájljait és alkönyvtárait rendezi.

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

A Get-ChildItem parancsmag lekéri a fájlokat és alkönyvtárakat az Elérési út paraméter által megadott könyvtárból. C:\Test A rendszer elküldi az objektumokat a folyamatnak a Sort-Object parancsmagnak. Sort-Object nem ad meg tulajdonságot, így a kimenet az alapértelmezett rendezési tulajdonság, a Név szerint van rendezve.

2. példa: Az aktuális könyvtár rendezése fájlhossz szerint

Ez a parancs növekvő sorrendben jeleníti meg az aktuális könyvtár fájljait.

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

A Get-ChildItem parancsmag lekéri a fájlokat az Elérési út paraméter által megadott könyvtárból. A Fájl paraméter azt adja meg, hogy Get-ChildItem csak a fájlobjektumok lesznek lekérve. A rendszer elküldi az objektumokat a folyamatnak a Sort-Object parancsmagnak. Sort-ObjectA Hossz paraméterrel növekvő sorrendben rendezheti a fájlokat hossz szerint.

3. példa: Folyamatok rendezése memóriahasználat szerint

Ez a példa a legnagyobb memóriahasználattal rendelkező folyamatokat jeleníti meg a munkakészlet (WS) mérete alapján.

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

A Get-Process parancsmag lekéri a számítógépen futó folyamatok listáját. A folyamatobjektumok le lesznek küldve a folyamaton a Sort-Object parancsmagnak. Sort-ObjectA Tulajdonság paraméter használatával rendezi az objektumokat WS szerint. A rendszer elküldi az objektumokat a folyamatnak a Select-Object parancsmagnak. Select-ObjectAz Utolsó paraméterrel adja meg az utolsó öt objektumot, amelyek a legmagasabb WS-használattal rendelkező objektumok.

A PowerShell 6-ban az Sort-Object Bottom paraméter alternatíva a .Select-Object Például: Get-Process | Sort-Object -Property WS -Bottom 5.

4. példa: HistoryInfo-objektumok rendezése azonosító szerint

Ez a parancs az Id tulajdonsággal rendezi a PowerShell-munkamenet HistoryInfo objektumait. Minden PowerShell-munkamenetnek saját parancselőzményei vannak.

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\

A Get-History parancsmag lekéri az előzményobjektumokat az aktuális PowerShell-munkamenetből. A rendszer elküldi az objektumokat a folyamatnak a Sort-Object parancsmagnak. Sort-ObjectA Tulajdonság paraméter használatával rendezi az objektumokat azonosító szerint. A csökkenő paraméter a parancselőzményeket a legújabbtól a legrégebbiig rendezi.

5. példa: A tulajdonságok növekvő és csökkenő sorrendbe rendezése kivonattáblával

Ez a példa két tulajdonságot használ az objektumok, az Állapot és a DisplayName rendezéséhez. Az állapot csökkenő sorrendben, a DisplayName pedig növekvő sorrendben van rendezve.

A rendszer kivonattáblát használ a tulajdonságparaméter értékének megadásához. A kivonattábla kifejezéssel adja meg a tulajdonságneveket és a rendezési sorrendeket. További információ a kivonattáblákról: about_Hash_Tables.

A kivonattáblában használt Állapot tulajdonság egy számba vett tulajdonság. További információ: ServiceControllerStatus.

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

A Get-Service parancsmag lekéri a számítógépen található szolgáltatások listáját. A szolgáltatásobjektumok le lesznek küldve a folyamatról a Sort-Object parancsmagnak. Sort-ObjectA Tulajdonság paraméter egy kivonattáblával adja meg a tulajdonságneveket és a rendezési sorrendeket. A Tulajdonság paraméter két tulajdonság szerint van rendezve, az Állapot csökkenő sorrendben, a DisplayName pedig növekvő sorrendben.

Az állapot egy számbavételi tulajdonság. A leállított érték 1 , a Futtatás értéke pedig 4. A csökkenő paraméter úgy van beállítva$True, hogy a futó folyamatok a leállított folyamatok előtt jelenjenek meg. A DisplayName a csökkenő paramétert úgy állítja be, hogy $False betűrendbe rendezze a megjelenített neveket.

6. példa: Szövegfájlok rendezése időtartomány szerint

Ez a parancs csökkenő sorrendben rendezi a szövegfájlokat a CreationTime és a LastWriteTime közötti időtartomány szerint.

Get-ChildItem -Path C:\Test\*.txt |
    Sort-Object -Property {$_.CreationTime - $_.LastWriteTime} |
    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

A Get-ChildItem parancsmag a Path paraméter használatával adja meg a könyvtárat C:\Test és az *.txt összes fájlt. A rendszer elküldi az objektumokat a folyamatnak a Sort-Object parancsmagnak. Sort-ObjectA Tulajdonság paraméter egy szkriptblokk használatával határozza meg a Létrehozási idő és a LastWriteTime közötti egyes fájlok időtartamát.

7. példa: Nevek rendezése szövegfájlban

Ez a példa bemutatja, hogyan rendezhet egy listát egy szövegfájlból. Az eredeti fájl rendezetlen listaként jelenik meg. Sort-Object rendezi a tartalmat, majd rendezi a tartalmat az Ismétlődő elemeket eltávolító Egyedi paraméterrel.

# All items unsorted
Get-Content -Path C:\Test\ServerNames.txt

localhost
server01
server25
LOCALHOST
Server19
server3
localhost

# All items sorted
Get-Content -Path C:\Test\ServerNames.txt | Sort-Object
localhost
LOCALHOST
localhost
server01
Server19
server25
server3

# Unique filtered items sorted
Get-Content -Path C:\Test\ServerNames.txt | Sort-Object -Unique

localhost
server01
Server19
server25
server3

A Get-Content parancsmag az Elérési út paraméter használatával adja meg a könyvtárat és a fájlnevet. A fájl ServerNames.txt a számítógépnevek nem válogatott listáját tartalmazza.

A Get-Content parancsmag az Elérési út paraméter használatával adja meg a könyvtárat és a fájlnevet. A fájl ServerNames.txt a számítógépnevek nem válogatott listáját tartalmazza. A rendszer elküldi az objektumokat a folyamatnak a Sort-Object parancsmagnak. Sort-Object A listát az alapértelmezett sorrendben, növekvő sorrendben rendezi.

A Get-Content parancsmag az Elérési út paraméter használatával adja meg a könyvtárat és a fájlnevet. A fájl ServerNames.txt a számítógépnevek nem válogatott listáját tartalmazza. A rendszer elküldi az objektumokat a folyamatnak a Sort-Object parancsmagnak. Sort-Objectaz Egyedi paraméter használatával távolítja el az ismétlődő számítógépneveket. A lista az alapértelmezett sorrendben, növekvő sorrendben van rendezve.

8. példa: Sztring rendezése egész számként

Ez a példa bemutatja, hogyan rendezhet egy sztringobjektumokat egész számként tartalmazó szövegfájlt. Az egyes parancsokat elküldheti a folyamatnak Get-Member , és ellenőrizheti, hogy az objektumok sztringek-e egész számok helyett. Ezekben a példákban a fájl a ProductId.txt termékszámok nem válogatott listáját tartalmazza.

Az első példában lekéri a fájl tartalmát és Get-Content a csövek sorait a Sort-Object parancsmaghoz. Sort-Object A sztringobjektumokat növekvő sorrendbe rendezi.

# String sorted
Get-Content -Path C:\Test\ProductId.txt | Sort-Object

0
1
12345
1500
2
2800
3500
4100
500
6200
77
88
99999

# Integer sorted
Get-Content -Path C:\Test\ProductId.txt | Sort-Object {[int]$_}

0
1
2
77
88
500
1500
2800
3500
4100
6200
12345
99999

A második példában lekéri a fájl tartalmát és Get-Content a csövek sorait a Sort-Object parancsmaghoz. Sort-Object a sztringek egész számmá alakításához szkriptblokkot használ. A mintakódban a sztringet egész számmá alakítja, [int] és $_ az egyes sztringeket jelöli a folyamat során. Az egész szám objektumokat a rendszer elküldi a folyamatnak a Sort-Object parancsmagnak. Sort-Object Számsorrendbe rendezi az egész szám objektumait.

9. példa: Stabil rendezés használata

A Top, Bottom vagy Stable paraméterek használatakor a rendszer a rendezett objektumokat abban a sorrendben kézbesíti, amelyben Sort-Object a rendezési feltételek egyenlőek. Ebben a példában a számokat 1–20-ig rendezzük a "modulo 3" értékük szerint. A modulo értéke nullától kettőig terjed.

1..20 |Sort-Object {$_ % 3}

18
3
15
6
12
9
1
16
13
10
7
4
19
11
8
14
5
17
2
20

1..20 |Sort-Object {$_ % 3} -Stable

3
6
9
12
15
18
1
4
7
10
13
16
19
2
5
8
11
14
17
20

Az első rendezés kimenete megfelelően van csoportosítva a modulus értéke szerint, de az egyes elemek nem a modulustartományon belül rendezve. A második rendezés a Stabil beállítással ad vissza egy stabil rendezést.

10. példa: Rendezés több tulajdonság szerint

Ha több tulajdonság szerint szeretne rendezni, vesszővel válassza el a tulajdonságokat.

Get-ChildItem -Path C:\Test | Sort-Object Length,Name

Directory: C:\Test

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          13/10/2021    22:16              2 File01.txt
-a---          13/10/2021    22:16              2 File03.txt
-a---          13/10/2021    22:18             64 File02.txt
-a---          13/10/2021    22:18             64 File04.txt

A Get-ChildItem parancsmag lekéri a fájlokat az Elérési út paraméter által megadott könyvtárból. A rendszer elküldi az objektumokat a folyamatnak a Sort-Object parancsmagnak. Sort-ObjectA Hossz és a Név paraméterrel növekvő sorrendben rendezheti a fájlokat hossz szerint. File03.txt Mivel File01.txt ugyanolyan hosszúságúak, a név tulajdonságuk szerint rendezik őket tovább.

11. példa: Kivonattáblák rendezése kulcsérték szerint

A PowerShell 6-tól Sort-Object kezdve támogatja a kivonatoló bemenetek kulcsértékek szerinti rendezését. Az alábbi példa a kivonatolók tömbjét rendezi az egyes kivonatolókulcsok weight értéke alapján.

@(
    @{ name = 'a' ; weight = 7 }
    @{ name = 'b' ; weight = 1 }
    @{ name = 'c' ; weight = 3 }
    @{ name = 'd' ; weight = 7 }
) | Sort-Object -Property weight -OutVariable Sorted

$Sorted | ForEach-Object -Process { "{0}: {1}" -f $_.name, $_.weight }

Name                           Value
----                           -----
Weight                         1
Name                           b
Weight                         3
Name                           c
Weight                         7
Name                           a
Weight                         7
Name                           d

b: 1
c: 3
a: 7
d: 7

Paraméterek

-Bottom

Megadja a rendezett objektumtömb végéről lekérendő objektumok számát. Ez stabil rendezést eredményez.

Ezt a paramétert a PowerShell 6.0-ban vezettük be.

Type:Int32
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-CaseSensitive

Azt jelzi, hogy a rendezés megkülönbözteti a kis- és nagybetűket. Alapértelmezés szerint a rendezés nem megkülönbözteti a kis- és nagybetűket.

Type:SwitchParameter
Position:Named
Default value:Case-insensitive
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Culture

Megadja a rendezéshez használandó kulturális konfigurációt. A rendszer kulturális konfigurációjának megjelenítésére használható Get-Culture .

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Descending

Azt jelzi, hogy Sort-Object az objektumok csökkenő sorrendben lesznek rendezve. Az alapértelmezett érték növekvő sorrend.

Ha több tulajdonságot szeretne rendezni különböző rendezési sorrendekkel, használjon kivonattáblát. Egy kivonattáblával például egy tulajdonságot növekvő sorrendbe, egy másik tulajdonságot pedig csökkenő sorrendbe rendezhet.

Type:SwitchParameter
Position:Named
Default value:Ascending
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Az objektumok rendezéséhez küldje el őket a folyamatba Sort-Object. Ha az InputObject paraméterrel küld el egy elemgyűjteményt, kap egy objektumot, Sort-Object amely a gyűjteményt jelöli. Mivel egy objektum nem rendezhető, Sort-Object a teljes gyűjteményt változatlanul adja vissza.

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Property

Megadja az objektumok rendezéséhez használt tulajdonságneveket Sort-Object . Helyettesítő karakterek használata engedélyezett. Az objektumok a tulajdonságértékek alapján vannak rendezve. Ha nem ad meg tulajdonságot, Sort-Object a rendezés az objektumtípus vagy maguk az objektumok alapértelmezett tulajdonságai alapján történik.

Több tulajdonság elkülönítéséhez használjon vesszőt. Több tulajdonság is rendezhető növekvő sorrendben, csökkenő sorrendben vagy rendezési sorrendek kombinációjában. Ha több tulajdonságot ad meg, az objektumokat az első tulajdonság rendezi. Ha több objektum értéke megegyezik az első tulajdonságéval, akkor a rendszer ezeket az objektumokat a második tulajdonság szerint rendezi. Ez a folyamat addig folytatódik, amíg nincs több megadott tulajdonság vagy objektumcsoport.

A tulajdonságparaméter értéke számított tulajdonság lehet. Számított tulajdonság létrehozásához használjon szkriptblokkot vagy kivonatolót.

A kivonattáblák érvényes kulcsai a következők:

  • expression - <string> vagy <script block>
  • ascending vagy descending - <boolean>

További információ: about_Calculated_Properties.

Type:Object[]
Position:0
Default value:Default properties
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Stable

A rendszer a rendezési feltételek egyenlősége esetén a kapott sorrendben kézbesíti a rendezett objektumokat.

Ez a paraméter a PowerShell 6.2.0-s verzióban lett hozzáadva.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Top

A rendezett objektumtömb kezdetétől lekérendő objektumok számát adja meg. Ez stabil rendezést eredményez.

Ezt a paramétert a PowerShell 6.0-ban vezettük be.

Type:Int32
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Unique

Azt jelzi, hogy Sort-Object nem ismétlődik, és csak a gyűjtemény egyedi tagjait adja vissza. Az egyedi érték első példánya szerepel a rendezett kimenetben.

Az egyedi kis- és nagybetűk nem érzékenyek. Azok a sztringek, amelyek csak karakteres esetenként különböznek, azonosnak minősülnek. Például karakter és KARAKTER.

Type:SwitchParameter
Position:Named
Default value:All
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Bevitelek

PSObject

A rendezendő objektumokat erre a parancsmagra csövezheti.

Kimenetek

PSObject

Ez a parancsmag a rendezett objektumokat adja vissza.

Jegyzetek

A PowerShell a következő aliasokat Sort-Objecttartalmazza:

  • Windows:
    • sort

A Sort-Object parancsmag a parancsban megadott tulajdonságok vagy az objektumtípus alapértelmezett rendezési tulajdonságai alapján rendezi az objektumokat. Az alapértelmezett rendezési tulajdonságok a PropertySet fájlban types.ps1xml szereplő névvel DefaultKeyPropertySet vannak definiálva. További információ: about_Types.ps1xml.

Ha egy objektum nem rendelkezik a megadott tulajdonságok egyikével, az objektum tulajdonságértékét Null értékként Sort-Objectértelmezi a rendszer, és a rendezési sorrend végén helyezi el.

Ha nem érhetők el rendezési tulajdonságok, a PowerShell megpróbálja összehasonlítani az objektumokat. Sort-ObjectA Compare metódust használja az egyes tulajdonságokhoz. Ha egy tulajdonság nem implementálja az IComparable függvényt, a parancsmag sztringgé alakítja a tulajdonságértéket, és a System.String Compare metódusát használja. További információ: PSObject.CompareTo(Object) metódus.

Ha egy számbavételi tulajdonság (például Állapot) alapján rendez, Sort-Object az enumerálási értékek szerint rendez. Windows-szolgáltatások esetén a Leállítva értéke 1, a Futtatás értéke pedig 4. A leállított értékeket a rendszer a futtatás előtt rendezi a számbavételi értékek miatt. További információ: ServiceControllerStatus.

Stabil rendezés esetén a rendezési algoritmus teljesítménye lassabb.