Sort-Object

Nesneleri özellik değerlerine göre sıralar.

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

Cmdlet, Sort-Object nesneleri nesne özelliği değerlerine göre artan veya azalan düzende sıralar. Sıralama özellikleri bir komuta dahil değilse PowerShell, ilk giriş nesnesinin varsayılan sıralama özelliklerini kullanır. Giriş nesnesinin türü varsayılan sıralama özelliklerine sahip değilse, PowerShell nesneleri karşılaştırmayı dener. Daha fazla bilgi için Notlar bölümüne bakın.

Nesneleri tek bir özelliğe veya birden çok özelliğe göre sıralayabilirsiniz. Birden çok özellik artan düzende, azalan düzende veya sıralama düzenlerinin birleşiminde sıralamak için karma tabloları kullanır. Özellikler büyük/küçük harfe duyarlı veya büyük/küçük harfe duyarlı olarak sıralanır. Çıkıştan yinelenenleri kaldırmak için Benzersiz parametresini kullanın.

Örnekler

Örnek 1: Geçerli dizini ada göre sıralama

Bu örnek, dizindeki dosyaları ve alt dizinleri sıralar.

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

cmdlet'i Get-ChildItem Path parametresi C:\Testtarafından belirtilen dizinden dosyaları ve alt dizinleri alır. Nesneler işlem hattına cmdlet'ine Sort-Object gönderilir. Sort-Object bir özellik belirtmediğinden, çıkış varsayılan sıralama özelliği olan Name'e göre sıralanır.

Örnek 2: Geçerli dizini dosya uzunluğuna göre sıralama

Bu komut geçerli dizindeki dosyaları artan düzende uzunluğa göre görüntüler.

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

cmdlet'i Get-ChildItem dosyaları Path parametresi tarafından belirtilen dizinden alır. File parametresi yalnızca dosya nesnelerinin alındığını Get-ChildItem belirtir. Nesneler işlem hattına cmdlet'ine Sort-Object gönderilir. Sort-Object, dosyaları uzunluğa göre artan düzende sıralamak için Length parametresini kullanır.

Örnek 3: İşlemleri bellek kullanımına göre sıralama

Bu örnekte, çalışma kümesi (WS) boyutuna göre en yüksek bellek kullanımına sahip işlemler görüntülenir.

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

cmdlet'i Get-Process bilgisayarda çalışan işlemlerin listesini alır. İşlem nesneleri işlem hattına cmdlet'ine Sort-Object gönderilir. Sort-Objectnesneleri WS'ye göre sıralamak için Property parametresini kullanır. Nesneler işlem hattına cmdlet'ine Select-Object gönderilir. Select-Object, en yüksek WS kullanımına sahip nesneler olan son beş nesneyi belirtmek için Last parametresini kullanır.

PowerShell 6'da Sort-Object Bottom parametresi alternatiftirSelect-Object. Örneğin, Get-Process | Sort-Object -Property WS -Bottom 5.

Örnek 4: HistoryInfo nesnelerini kimliklerine göre sıralama

Bu komut, Id özelliğini kullanarak PowerShell oturumunun HistoryInfo nesnelerini sıralar. Her PowerShell oturumlarının kendi komut geçmişi vardır.

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\

cmdlet'i Get-History geçerli PowerShell oturumundan geçmiş nesnelerini alır. Nesneler işlem hattına cmdlet'ine Sort-Object gönderilir. Sort-Object, nesneleri kimliklerine göre sıralamak için Property parametresini kullanır. Descending parametresi, komut geçmişini en yeniden en eskiye doğru sıralar.

Örnek 5: Özellikleri artan ve azalan düzende sıralamak için karma tablo kullanma

Bu örnekte nesneleri sıralamak için iki özellik kullanılır: Status ve DisplayName. Durum azalan düzende, DisplayName ise artan düzende sıralanır.

Özellik parametresinin değerini belirtmek için karma tablo kullanılır. Karma tablo, özellik adlarını ve sıralama düzenlerini belirtmek için bir ifade kullanır. Karma tabloları hakkında daha fazla bilgi için bkz. about_Hash_Tables.

Karma tabloda kullanılan Status özelliği numaralandırılmış bir özelliktir. Daha fazla bilgi için bkz . 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

cmdlet'i Get-Service bilgisayardaki hizmetlerin listesini alır. Hizmet nesneleri işlem hattına cmdlet'ine Sort-Object gönderilir. Sort-Objectözellik adlarını ve sıralama düzenlerini belirtmek için Bir karma tablo ile Property parametresini kullanır. Property parametresi iki özelliğe göre sıralanır: Azalan düzende Status ve artan düzende DisplayName.

Durum numaralandırılmış bir özelliktir. Durduruldu değerinin değeri 1 ve Çalışan değerinin değeri 4'tür. Çalışan işlemlerin Durdurulan işlemlerden önce görüntülenmesi için$TrueDescending parametresi olarak ayarlanır. DisplayName, görünen adları alfabetik düzende sıralamak için $False Descending parametresini olarak ayarlar.

Örnek 6: Metin dosyalarını zaman aralığına göre sıralama

Bu komut, metin dosyalarını CreationTime ile LastWriteTime arasındaki zaman aralığına göre azalan düzende sıralar.

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

cmdlet'i Get-ChildItem dizini C:\Test ve tüm dosyaları belirtmek için Path parametresini *.txt kullanır. Nesneler işlem hattına cmdlet'ine Sort-Object gönderilir. Sort-ObjectCreationTime ile LastWriteTime arasındaki her dosyanın zaman aralığını belirlemek için bir betik bloğu ile Property parametresini kullanır.

Örnek 7: Metin dosyasında adları sıralama

Bu örnekte, bir metin dosyasından listenin nasıl sıralanacağını gösterilmektedir. Özgün dosya sıralanmamış bir liste olarak görüntülenir. Sort-Objectiçeriği sıralar ve sonra yinelenenleri kaldıran Benzersiz parametresiyle içeriği sıralar.

# 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

Cmdlet, Get-Content dizini ve dosya adını belirtmek için Path parametresini kullanır. Dosya ServerNames.txt , bilgisayar adlarının sıralanmamış bir listesini içerir.

Cmdlet, Get-Content dizini ve dosya adını belirtmek için Path parametresini kullanır. Dosya ServerNames.txt , bilgisayar adlarının sıralanmamış bir listesini içerir. Nesneler işlem hattına cmdlet'ine Sort-Object gönderilir. Sort-Object listeyi varsayılan düzende artan düzende sıralar.

Cmdlet, Get-Content dizini ve dosya adını belirtmek için Path parametresini kullanır. Dosya ServerNames.txt , bilgisayar adlarının sıralanmamış bir listesini içerir. Nesneler işlem hattına cmdlet'ine Sort-Object gönderilir. Sort-Objectyinelenen bilgisayar adlarını kaldırmak için Benzersiz parametresini kullanır. Liste, varsayılan düzende artan düzende sıralanır.

Örnek 8: Dizeyi tamsayı olarak sıralama

Bu örnek, dize nesnelerini tamsayı olarak içeren bir metin dosyasının nasıl sıralanacağını gösterir. her komutu işlem hattına Get-Member gönderebilir ve nesnelerin tamsayılar yerine dizeler olduğunu doğrulayabilirsiniz. Bu örnekler için dosya, ProductId.txt ürün numaralarının sıralanmamış bir listesini içerir.

İlk örnekte, Get-Content dosyanın içeriğini alır ve cmdlet'ine Sort-Object satırlar ekler. Sort-Object dize nesnelerini artan düzende sıralar.

# 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

İkinci örnekte, Get-Content dosyanın içeriğini alır ve cmdlet'ine Sort-Object satırlar ekler. Sort-Object dizeleri tamsayılara dönüştürmek için bir betik bloğu kullanır. Örnek kodda, [int] dizeyi bir tamsayıya dönüştürür ve $_ işlem hattında aşağı doğru gelen her dizeyi temsil eder. Tamsayı nesneleri işlem hattından cmdlet'ine Sort-Object gönderilir. Sort-Object tamsayı nesnelerini sayısal düzende sıralar.

Örnek 9: Kararlı sıralamaları kullanma

Top, Bottom veya Stable parametrelerini kullandığınızda, sıralanmış nesneler sıralama ölçütleri eşit olduğunda aldıkları Sort-Object sırayla teslim edilir. Bu örnekte, sayıları 'modulo 3' değerine göre bir ile 20 arasında sıralıyoruz. Modül değeri sıfırdan ikiye kadar değişir.

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

İlk sıralamadan elde edilen çıkış modül değerine göre doğru şekilde gruplandırılır, ancak tek tek öğeler modül aralığı içinde sıralanmamıştır. İkinci sıralama, kararlı bir sıralama döndürmek için Kararlı seçeneğini kullanır.

Örnek 10: Birden çok özelliğe göre sıralama

Birden çok özelliğe göre sıralamak istiyorsanız, özellikleri virgülle ayırın.

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

cmdlet'i Get-ChildItem dosyaları Path parametresi tarafından belirtilen dizinden alır. Nesneler işlem hattına cmdlet'ine Sort-Object gönderilir. Sort-Object, dosyaları uzunluğa göre artan düzende sıralamak için Length ve Name parametresini kullanır. Ve File01.txtFile03.txt aynı uzunlukta olduğundan, özellik Adlarına göre daha da sıralanırlar.

Örnek 11: Karma tablolarını anahtar değerine göre sıralama

PowerShell 6'da başlayarak karma Sort-Object tablo girişinin anahtar değerlerine göre sıralanması destekleniyor. Aşağıdaki örnek, bir karma tablo dizisini her karma tablo weight anahtarının değerine göre sıralar.

@(
    @{ 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

Parametreler

-Bottom

Sıralanmış nesne dizisinin sonundan alınacak nesne sayısını belirtir. Bu, kararlı bir sıralamayla sonuçlanır.

Bu parametre PowerShell 6.0'da kullanıma sunulmuştur.

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

-CaseSensitive

Sıralamanın büyük/küçük harfe duyarlı olduğunu gösterir. Varsayılan olarak, sıralamalar büyük/küçük harfe duyarlı değildir.

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

-Culture

Sıralamalar için kullanılacak kültürel yapılandırmayı belirtir. Sistemin kültür yapılandırmasını görüntülemek için kullanın Get-Culture .

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

-Descending

Nesnelerin azalan düzende sıralandığını Sort-Object gösterir. Varsayılan değer artan düzendir.

Farklı sıralama düzenlerine sahip birden çok özelliği sıralamak için karma tablo kullanın. Örneğin, karma tabloyla bir özelliği artan düzende, diğer özelliği de azalan düzende sıralayabilirsiniz.

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

-InputObject

Nesneleri sıralamak için, işlem hattının aşağısına Sort-Objectgönderin. Bir öğe koleksiyonu göndermek için InputObject parametresini kullanırsanız, Sort-Object koleksiyonu temsil eden bir nesne alır. Bir nesne sıralanamadığından, Sort-Object koleksiyonun tamamını değiştirmeden döndürür.

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

-Property

Nesneleri sıralamak için kullanılan Sort-Object özellik adlarını belirtir. Joker karakterlere izin verilir. Nesneler özellik değerlerine göre sıralanır. Bir özellik belirtmezseniz, Sort-Object nesne türü veya nesnelerin kendileri için varsayılan özelliklere göre sıralar.

Birden çok özelliği ayırmak için virgül kullanın. Birden çok özellik artan düzende, azalan düzende veya sıralama düzenlerinin bir bileşiminde sıralanabilir. Birden çok özellik belirttiğinizde, nesneler ilk özelliğe göre sıralanır. Birden çok nesne ilk özellik için aynı değere sahipse, bu nesneler ikinci özelliğe göre sıralanır. Bu işlem, daha fazla belirtilen özellik veya nesne grubu kalmayıncaya kadar devam eder.

Property parametresinin değeri hesaplanmış bir özellik olabilir. Hesaplanmış özellik oluşturmak için betik bloğu veya karma tablo kullanın.

Karma tablo için geçerli anahtarlar aşağıdaki gibidir:

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

Daha fazla bilgi için bkz . about_Calculated_Properties.

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

-Stable

Sıralanmış nesneler, sıralama ölçütleri eşit olduğunda alındıkları sırayla teslim edilir.

Bu parametre PowerShell v6.2.0'a eklendi.

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

-Top

Sıralanmış nesne dizisinin başlangıcından itibaren alınacak nesne sayısını belirtir. Bu, kararlı bir sıralamayla sonuçlanır.

Bu parametre PowerShell 6.0'da kullanıma sunulmuştur.

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

-Unique

Yinelenenleri ortadan kaldırdığını ve yalnızca koleksiyonun benzersiz üyelerini döndürdüğünü Sort-Object gösterir. Benzersiz bir değerin ilk örneği sıralanmış çıktıya eklenir.

Benzersiz büyük/küçük harfe duyarlı değildir. Yalnızca karakter büyük/küçük harfe göre farklılık gösteren dizeler aynı kabul edilir. Örneğin, karakter ve KARAKTER.

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

Girişler

PSObject

Sıralanacak nesneleri bu cmdlet'e yöneltebilirsiniz.

Çıkışlar

PSObject

Bu cmdlet sıralanmış nesneleri döndürür.

Notlar

PowerShell için aşağıdaki diğer adları Sort-Objectiçerir:

  • Windows:
    • sort

cmdlet, Sort-Object nesneleri komutta belirtilen özelliklere veya nesne türü için varsayılan sıralama özelliklerine göre sıralar. Varsayılan sıralama özellikleri, bir types.ps1xml dosyadaki adlandırılmış kullanılarak PropertySetDefaultKeyPropertySet tanımlanır. Daha fazla bilgi için bkz . about_Types.ps1xml.

Bir nesne belirtilen özelliklerden birine sahip değilse, bu nesnenin özellik değeri Null olarak yorumlanır Sort-Object ve sıralama düzeninin sonuna yerleştirilir.

Kullanılabilir sıralama özelliği olmadığında, PowerShell nesneleri karşılaştırmayı dener. Sort-Objecther özellik için Compare yöntemini kullanır. Bir özellik IComparable uygulamazsa, cmdlet özellik değerini bir dizeye dönüştürür ve System.String için Compare yöntemini kullanır. Daha fazla bilgi için bkz . PSObject.CompareTo(Nesne) Yöntemi.

Durum gibi numaralandırılmış bir özelliğe göre sıralarsanız, Sort-Object numaralandırma değerlerine göre sıralar. Windows hizmetleri için, Durduruldu değeri 1 ve Çalışıyor değeri 4'tür. Durduruldu, numaralandırılmış değerler nedeniyle Çalışıyor'a göre sıralanır. Daha fazla bilgi için bkz . ServiceControllerStatus.

Kararlı bir sıralama yapılırken sıralama algoritmasının performansı daha yavaştır.