Sort-Object
Mengurutkan objek menurut nilai properti.
Sintaks
Sort-Object
[[-Property] <Object[]>]
[-Descending]
[-Unique]
[-InputObject <psobject>]
[-Culture <string>]
[-CaseSensitive]
[<CommonParameters>]
Deskripsi
Sort-Object
Cmdlet mengurutkan objek dalam urutan naik atau menurun berdasarkan nilai properti objek. Jika properti pengurutan tidak disertakan dalam perintah, PowerShell menggunakan properti pengurutan default dari objek input pertama. Jika jenis objek input tidak memiliki properti pengurutan default, PowerShell mencoba membandingkan objek itu sendiri. Untuk informasi selengkapnya, lihat bagian Catatan.
Anda bisa mengurutkan objek menurut satu properti atau beberapa properti. Beberapa properti menggunakan tabel hash untuk mengurutkan dalam urutan naik, urutan turun, atau kombinasi urutan pengurutan. Properti diurutkan sebagai peka huruf besar/kecil atau tidak peka huruf besar/kecil. Gunakan parameter Unik untuk menghapus duplikat dari output.
Contoh
Contoh 1: Urutkan direktori saat ini menurut nama
Contoh ini mengurutkan file dan subdirektori dalam direktori.
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
Get-ChildItem
Cmdlet mendapatkan file dan subdirektori dari direktori yang ditentukan oleh parameter Jalur, C:\Test
. Objek dikirimkan alur ke Sort-Object
cmdlet.
Sort-Object
tidak menentukan properti sehingga output diurutkan menurut properti pengurutan default, Nama.
Contoh 2: Urutkan direktori saat ini menurut panjang file
Perintah ini menampilkan file dalam direktori saat ini dengan panjang dalam urutan naik.
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
Get-ChildItem
Cmdlet mendapatkan file dari direktori yang ditentukan oleh parameter Jalur.
Parameter File menentukan bahwa Get-ChildItem
hanya mendapatkan objek file. Objek dikirimkan alur ke Sort-Object
cmdlet. Sort-Object
menggunakan parameter Panjang untuk mengurutkan file menurut panjang dalam urutan naik.
Contoh 3: Mengurutkan proses menurut penggunaan memori
Contoh ini menampilkan proses dengan penggunaan memori tertinggi berdasarkan ukuran set kerja (WS).
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
Get-Process
Cmdlet mendapatkan daftar proses yang berjalan di komputer. Objek proses dikirimkan alur ke Sort-Object
cmdlet. Sort-Object
menggunakan parameter Properti untuk mengurutkan objek menurut WS. Objek dikirimkan alur ke Select-Object
cmdlet.
Select-Object
menggunakan parameter Terakhir untuk menentukan lima objek terakhir, yang merupakan objek dengan penggunaan WS tertinggi.
Contoh 4: Urutkan objek HistoryInfo menurut Id
Perintah ini mengurutkan objek HistoryInfo sesi PowerShell menggunakan properti Id. Setiap sesi PowerShell memiliki riwayat perintahnya sendiri.
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\
Get-History
Cmdlet mendapatkan objek riwayat dari sesi PowerShell saat ini. Objek dikirimkan alur ke Sort-Object
cmdlet. Sort-Object
menggunakan parameter Properti untuk mengurutkan objek menurut Id. Parameter Turun mengurutkan riwayat perintah dari yang terbaru ke terlama.
Contoh 5: Gunakan tabel hash untuk mengurutkan properti dalam urutan naik dan turun
Contoh ini menggunakan dua properti untuk mengurutkan objek, Status dan DisplayName. Status diurutkan dalam urutan turun dan DisplayName diurutkan dalam urutan naik.
Tabel hash digunakan untuk menentukan nilai parameter Properti . Tabel hash menggunakan ekspresi untuk menentukan nama properti dan urutan pengurutan. Untuk informasi selengkapnya tentang tabel hash, lihat about_Hash_Tables.
Properti Status yang digunakan dalam tabel hash adalah properti enumerasi. Untuk informasi selengkapnya, lihat 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
Get-Service
Cmdlet mendapatkan daftar layanan di komputer. Objek layanan dikirimkan alur ke Sort-Object
cmdlet. Sort-Object
menggunakan parameter Properti dengan tabel hash untuk menentukan nama properti dan urutan pengurutan. Parameter Properti diurutkan menurut dua properti, Status dalam urutan turun dan DisplayName dalam urutan naik.
Status adalah properti enumerasi. Dihentikan memiliki nilai 1 dan Berjalan memiliki nilai 4. Parameter Turun diatur ke $True
sehingga proses Berjalan ditampilkan sebelum Proses dihentikan . DisplayName mengatur parameter Turun ke $False
untuk mengurutkan nama tampilan dalam urutan alfabet.
Contoh 6: Urutkan file teks menurut rentang waktu
Perintah ini mengurutkan file teks dalam urutan menurun menurut rentang waktu antara CreationTime dan LastWriteTime.
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
Get-ChildItem
Cmdlet menggunakan parameter Jalur untuk menentukan direktori C:\Test
dan semua *.txt
file. Objek dikirimkan alur ke Sort-Object
cmdlet.
Sort-Object
menggunakan parameter Properti dengan blokir skrip untuk menentukan setiap file rentang waktu antara CreationTime dan LastWriteTime.
Contoh 7: Mengurutkan nama dalam file teks
Contoh ini memperlihatkan cara mengurutkan daftar dari file teks. File asli ditampilkan sebagai daftar yang tidak diurutkan. Sort-Object
mengurutkan konten lalu mengurutkan konten dengan parameter Unik yang menghapus duplikat.
# 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
Get-Content
Cmdlet menggunakan parameter Jalur untuk menentukan direktori dan nama file. File ServerNames.txt
berisi daftar nama komputer yang tidak diurai.
Get-Content
Cmdlet menggunakan parameter Jalur untuk menentukan direktori dan nama file. File ServerNames.txt
berisi daftar nama komputer yang tidak diurai. Objek dikirimkan alur ke Sort-Object
cmdlet. Sort-Object
mengurutkan daftar dalam urutan default, naik.
Get-Content
Cmdlet menggunakan parameter Jalur untuk menentukan direktori dan nama file. File ServerNames.txt
berisi daftar nama komputer yang tidak diurai. Objek dikirimkan alur ke Sort-Object
cmdlet. Sort-Object
menggunakan parameter Unik untuk menghapus nama komputer duplikat. Daftar diurutkan dalam urutan default, naik.
Contoh 8: Mengurutkan string sebagai bilangan bulat
Contoh ini memperlihatkan cara mengurutkan file teks yang berisi objek string sebagai bilangan bulat. Anda dapat mengirim setiap perintah ke Get-Member
alur dan memverifikasi bahwa objek adalah string, bukan bilangan bulat. Untuk contoh ini, ProductId.txt
file berisi daftar nomor produk yang tidak diurai.
Dalam contoh pertama, Get-Content
mendapatkan konten file dan alur baris ke Sort-Object
cmdlet. Sort-Object
mengurutkan objek string dalam urutan naik.
# 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
Dalam contoh kedua, Get-Content
mendapatkan konten file dan alur baris ke Sort-Object
cmdlet. Sort-Object
menggunakan blok skrip untuk mengonversi string menjadi bilangan bulat. Dalam kode sampel, [int]
mengonversi string menjadi bilangan bulat dan $_
mewakili setiap string saat turun dari alur. Objek bilangan bulat dikirimkan alur ke Sort-Object
cmdlet.
Sort-Object
mengurutkan objek bilangan bulat dalam urutan numerik.
Contoh 9: Mengurutkan menurut beberapa properti
Jika Anda ingin mengurutkan menurut beberapa properti, pisahkan properti menurut koma.
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
Get-ChildItem
Cmdlet mendapatkan file dari direktori yang ditentukan oleh parameter Jalur.
Objek dikirimkan alur ke Sort-Object
cmdlet. Sort-Object
menggunakan parameter Panjang dan Nama untuk mengurutkan file menurut panjang dalam urutan naik. Karena File01.txt
dan File03.txt
memiliki panjang yang sama, mereka lebih lanjut diurutkan menurut nama properti mereka.
Contoh 10: Mengurutkan hashtable berdasarkan nilai kuncinya dengan properti terhitung
Contoh ini menunjukkan bagaimana Anda dapat mengurutkan objek yang dapat di-hash berdasarkan nilai kuncinya. Anda dapat menentukan satu atau beberapa blokir skrip untuk parameter Properti . Ekspresi dalam blok skrip ini digunakan untuk menentukan urutan pengurutan untuk input seperti nilai untuk properti bernama.
@(
@{ name = 'a' ; weight = 7 }
@{ name = 'b' ; weight = 1 }
@{ name = 'c' ; weight = 3 }
@{ name = 'd' ; weight = 7 }
) | Sort-Object -Property { $_.weight }, { $_.name } -OutVariable Sorted
$Sorted | ForEach-Object -Process { "{0}: {1}" -f $_.name, $_.weight }
Ekspresi { $_.weight }
dan { $_.name }
mengurutkan hashtable input terlebih dahulu berdasarkan nilai kuncinya weight
lalu dengan nilai kuncinya name
. Perintah Sort-Object
menggunakan parameter OutVariable untuk menyimpan hasilnya ke variabel dan menampilkan hasilnya dalam panggilan yang sama.
Perintah terakhir berulang di atas hashtable yang diurutkan untuk menampilkan nama dan beratnya sebagai string.
Parameter
-CaseSensitive
Menunjukkan bahwa pengurutan peka huruf besar/kecil. Secara default, pengurutan tidak peka huruf besar/kecil.
Type: | SwitchParameter |
Position: | Named |
Default value: | Case-insensitive |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Culture
Menentukan konfigurasi budaya yang akan digunakan untuk pengurutan. Gunakan Get-Culture
untuk menampilkan konfigurasi budaya sistem.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Descending
Menunjukkan bahwa Sort-Object
mengurutkan objek dalam urutan turun. Defaultnya adalah urutan naik.
Untuk mengurutkan beberapa properti dengan urutan pengurutan yang berbeda, gunakan tabel hash. Misalnya, dengan tabel hash Anda dapat mengurutkan satu properti dalam urutan naik dan properti lain dalam urutan menurut.
Type: | SwitchParameter |
Position: | Named |
Default value: | Ascending |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Untuk mengurutkan objek, kirimkan ke alur ke Sort-Object
. Jika Anda menggunakan parameter InputObject untuk mengirimkan kumpulan item, Sort-Object
menerima satu objek yang mewakili koleksi. Karena satu objek tidak dapat diurutkan, Sort-Object
mengembalikan seluruh koleksi yang tidak berubah.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Property
Menentukan nama properti yang Sort-Object
digunakan untuk mengurutkan objek. Kartubebas diizinkan.
Objek diurutkan berdasarkan nilai properti. Jika Anda tidak menentukan properti, Sort-Object
urutkan berdasarkan properti default untuk jenis objek atau objek itu sendiri.
Gunakan koma untuk memisahkan beberapa properti. Beberapa properti dapat diurutkan dalam urutan naik, urutan turun, atau kombinasi urutan pengurutan. Saat Anda menentukan beberapa properti, objek diurutkan menurut properti pertama. Jika beberapa objek memiliki nilai yang sama untuk properti pertama, objek tersebut diurutkan menurut properti kedua. Proses ini berlanjut hingga tidak ada lagi properti yang ditentukan atau tidak ada grup objek.
Nilai parameter Properti dapat menjadi properti terhitung. Untuk membuat properti terhitung, gunakan blokir skrip atau hashtable.
Kunci yang valid untuk tabel hash adalah sebagai berikut:
expression
-<string>
atau<script block>
ascending
ataudescending
-<boolean>
Untuk informasi selengkapnya, lihat about_Calculated_Properties.
Type: | Object[] |
Position: | 0 |
Default value: | Default properties |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Unique
Menunjukkan bahwa Sort-Object
menghilangkan duplikat dan hanya mengembalikan anggota unik koleksi. Instans pertama dari nilai unik disertakan dalam output yang diurutkan.
Unik tidak peka huruf besar/kecil. String yang hanya berbeda menurut kasus karakter dianggap sama. Misalnya, karakter dan CHARACTER.
Type: | SwitchParameter |
Position: | Named |
Default value: | All |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Input
Anda dapat menyalurkan objek yang akan diurutkan ke cmdlet ini.
Output
Cmdlet ini mengembalikan objek yang diurutkan.
Catatan
Windows PowerShell menyertakan alias berikut untuk Sort-Object
:
sort
Sort-Object
Cmdlet mengurutkan objek berdasarkan properti yang ditentukan dalam perintah atau properti pengurutan default untuk jenis objek. Properti pengurutan default didefinisikan menggunakan yang dinamai PropertySet
DefaultKeyPropertySet
dalam types.ps1xml
file. Untuk informasi selengkapnya, lihat about_Types.ps1xml.
Jika objek tidak memiliki salah satu properti yang ditentukan, nilai properti untuk objek tersebut ditafsirkan oleh Sort-Object
sebagai Null dan ditempatkan di akhir urutan pengurutan.
Ketika tidak ada properti pengurutan yang tersedia, PowerShell mencoba membandingkan objek itu sendiri.
Sort-Object
menggunakan metode Bandingkan untuk setiap properti. Jika properti tidak mengimplementasikan IComparable, cmdlet mengonversi nilai properti menjadi string dan menggunakan metode Bandingkan untuk System.String. Untuk informasi selengkapnya, lihat Metode PSObject.CompareTo(Object).
Jika Anda mengurutkan pada properti enumerasi seperti Status, Sort-Object
urutkan menurut nilai enumerasi. Untuk layanan Windows, Dihentikan memiliki nilai 1 dan Berjalan memiliki nilai 4.
Dihentikan diurutkan sebelum Berjalan karena nilai yang dijumlahkan. Untuk informasi selengkapnya, lihat ServiceControllerStatus.