Sort-Object
Nesneleri özellik değerlerine göre sıralar.
Sözdizimi
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:\Test
tarafı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-Object
nesneleri 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 $True
Descending 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-Object
CreationTime 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-Object
iç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-Object
yinelenen 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.txt
File03.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.
Tür: | Int32 |
Position: | Named |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | 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.
Tür: | SwitchParameter |
Position: | Named |
Default value: | Case-insensitive |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | 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
.
Tür: | String |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | 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.
Tür: | SwitchParameter |
Position: | Named |
Default value: | Ascending |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-InputObject
Nesneleri sıralamak için, işlem hattının aşağısına Sort-Object
gö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.
Tür: | PSObject |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | 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
veyadescending
-<boolean>
Daha fazla bilgi için bkz . about_Calculated_Properties.
Tür: | Object[] |
Position: | 0 |
Default value: | Default properties |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | 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.
Tür: | SwitchParameter |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | 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.
Tür: | Int32 |
Position: | Named |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | 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.
Tür: | SwitchParameter |
Position: | Named |
Default value: | All |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
Girişler
Sıralanacak nesneleri bu cmdlet'e yöneltebilirsiniz.
Çıkışlar
Bu cmdlet sıralanmış nesneleri döndürür.
Notlar
PowerShell için aşağıdaki diğer adları Sort-Object
iç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 PropertySet
DefaultKeyPropertySet
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-Object
her ö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.
İlişkili Bağlantılar
PowerShell