Group-Object
Mengelompokkan objek yang berisi nilai yang sama untuk properti yang ditentukan.
Sintaks
HashTable
Group-Object
[[-Property] <Object[]>]
[-NoElement]
[-AsHashTable]
[-AsString]
[-InputObject <PSObject>]
[-Culture <String>]
[-CaseSensitive]
[<CommonParameters>]
Deskripsi
cmdlet Group-Object menampilkan objek dalam grup berdasarkan nilai properti tertentu.
Group-Object mengembalikan tabel dengan satu baris untuk setiap nilai properti dan kolom yang menampilkan jumlah item dengan nilai tersebut.
Jika Anda menentukan lebih dari satu properti, Group-Object pertama mengelompokkannya berdasarkan nilai properti pertama, lalu, dalam setiap grup properti, properti tersebut dikelompokkan menurut nilai properti berikutnya.
Dimulai di PowerShell 7, Group-Object dapat menggabungkan parameter CaseSensitive dan AsHashtable untuk membuat tabel hash peka huruf besar/kecil. Kunci tabel hash menggunakan perbandingan peka huruf besar/kecil dan menghasilkan objek System.Collections.Hashtable.
Contoh
Contoh 1: Mengelompokkan file menurut ekstensi
Contoh ini secara rekursif mendapatkan file di bawah $PSHOME dan mengelompokkannya berdasarkan ekstensi nama file. Output dikirim ke cmdlet Sort-Object, yang mengurutkannya berdasarkan file hitungan yang ditemukan untuk ekstensi yang diberikan. Nama kosong mewakili direktori.
Contoh ini menggunakan parameter NoElement untuk menghilangkan anggota grup.
$files = Get-ChildItem -Path $PSHOME -Recurse
$files |
Group-Object -Property Extension -NoElement |
Sort-Object -Property Count -Descending
Count Name
----- ----
365 .xml
231 .cdxml
197
169 .ps1xml
142 .txt
114 .psd1
63 .psm1
49 .xsd
36 .dll
15 .mfl
15 .mof
...
Contoh 2: Mengelompokkan bilangan bulat menurut ganjil dan genap
Contoh ini menunjukkan cara menggunakan blok skrip sebagai nilai parameter Properti
1..20 | Group-Object -Property {$_ % 2}
Count Name Group
----- ---- -----
10 0 {2, 4, 6, 8...}
10 1 {1, 3, 5, 7...}
Contoh 3: Mengelompokkan hashtable menurut nilai kunci
Dimulai di PowerShell 6, Group-Object mendukung pengurutan input hashtable menurut nilai kunci.
Contoh berikut mengelompokkan array hashtable berdasarkan nilai setiap kunci weight hashtable.
Contoh ini menggunakan parameter NoElement untuk menghilangkan anggota grup.
@(
@{ name = 'a' ; weight = 7 }
@{ name = 'b' ; weight = 1 }
@{ name = 'c' ; weight = 3 }
@{ name = 'd' ; weight = 7 }
) | Group-Object -Property weight -NoElement
Count Name
----- ----
1 1
1 3
2 7
Contoh 4: Mengelompokkan peristiwa log peristiwa menurut EntryType
Contoh ini menampilkan 1.000 entri terbaru dalam log peristiwa Sistem, dikelompokkan menurut EntryType.
Dalam output, kolom Count mewakili jumlah entri di setiap grup. Kolom Nama mewakili nilai EventType yang menentukan grup. Kolom Grup mewakili objek di setiap grup.
Get-WinEvent -LogName System -MaxEvents 1000 | Group-Object -Property LevelDisplayName
Count Name Group
----- ---- -----
153 Error {System.Diagnostics.Eventing.Reader.EventLogRecord, System.Diag...}
722 Information {System.Diagnostics.Eventing.Reader.EventLogRecord, System.Diag...}
125 Warning {System.Diagnostics.Eventing.Reader.EventLogRecord, System.Diag...}
Contoh 5: Proses grup menurut kelas prioritas
Contoh ini menunjukkan efek parameter NoElement
Perintah pertama menggunakan cmdlet Get-Process untuk mendapatkan proses di komputer dan mengirim objek ke bawah alur.
Group-Objectmengelompokkan objek berdasarkan nilai properti PriorityClass.
Contoh kedua menggunakan parameter NoElement untuk menghapus anggota grup dari output. Hasilnya adalah tabel dengan hanya Hitungan dan nilai properti Nama.
Hasilnya ditunjukkan dalam contoh output berikut.
Get-Process | Group-Object -Property PriorityClass
Count Name Group
----- ---- -----
55 Normal {System.Diagnostics.Process (AdtAgent), System.Diagnosti...
1 {System.Diagnostics.Process (Idle)}
3 High {System.Diagnostics.Process (Newproc), System.Diagnostic...
2 BelowNormal {System.Diagnostics.Process (winperf),
Get-Process | Group-Object -Property PriorityClass -NoElement
Count Name
----- ----
55 Normal
1
3 High
2 BelowNormal
Contoh 6: Proses grup berdasarkan nama
Contoh berikut menggunakan Group-Object untuk mengelompokkan beberapa instans proses yang berjalan di komputer lokal.
Where-Object menampilkan proses dengan lebih dari satu instans.
Get-Process | Group-Object -Property Name -NoElement | Where-Object {$_.Count -gt 1}
Count Name
----- ----
2 csrss
5 svchost
2 winlogon
2 wmiprvse
Contoh 7: Mengelompokkan objek dalam tabel hash
Contoh ini menggunakan parameter AsHashTable dan AsString untuk mengembalikan grup dalam tabel hash, sebagai kumpulan pasangan kunci-nilai.
Dalam tabel hash yang dihasilkan, setiap nilai properti adalah kunci, dan elemen grup adalah nilainya. Karena setiap kunci adalah properti objek tabel hash, Anda dapat menggunakan notasi titik untuk menampilkan nilai.
Perintah pertama mendapatkan cmdlet Get dan Set dalam sesi, mengelompokkannya berdasarkan kata kerja, mengembalikan grup sebagai tabel hash, dan menyimpan tabel hash dalam variabel $A.
Perintah kedua menampilkan tabel hash di $A. Ada dua pasangan kunci-nilai, satu untuk cmdlet Get dan satu untuk cmdlet Set.
Perintah ketiga menggunakan notasi titik, $A.Get untuk menampilkan nilai kunci Dapatkan di $A. Nilainya objek CmdletInfo. Parameter AsString tidak mengonversi objek dalam grup menjadi string.
$A = Get-Command Get-*, Set-* -CommandType Cmdlet |
Group-Object -Property Verb -AsHashTable -AsString
$A
Name Value
---- -----
Get {Get-Acl, Get-Alias, Get-AppLockerFileInformation, Get-AppLockerPolicy...}
Set {Set-Acl, Set-Alias, Set-AppBackgroundTaskResourcePolicy, Set-AppLockerPolicy...}
$A.Get
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-Acl 7.0.0.0 Microsoft.PowerShell.Security
Cmdlet Get-Alias 7.0.0.0 Microsoft.PowerShell.Utility
Cmdlet Get-AppLockerFileInformation 2.0.0.0 AppLocker
Cmdlet Get-AppLockerPolicy 2.0.0.0 AppLocker
...
Contoh 8: Membuat tabel hash peka huruf besar/kecil
Contoh ini menggabungkan parameter CaseSensitive dan AsHashTable untuk membuat tabel hash peka huruf besar/kecil. File dalam contoh memiliki ekstensi .txt dan .TXT.
$hash = Get-ChildItem -Path C:\Files |
Group-Object -Property Extension -CaseSensitive -AsHashTable
$hash
Name Value
---- -----
.TXT {C:\Files\File7.TXT, C:\Files\File8.TXT, C:\Files\File9.TXT}
.txt {C:\Files\file1.txt, C:\Files\file2.txt, C:\Files\file3.txt}
Variabel $hash menyimpan objek System.Collections.Hashtable.
Get-ChildItem mendapatkan nama file dari direktori C:\Files dan mengirim objek System.IO.FileInfo ke bawah alur.
Group-Object mengelompokkan objek menggunakan nilai PropertiEkstensi. Parameter CaseSensitive dan AsHashTable membuat tabel hash dan kunci dikelompokkan menggunakan kunci peka huruf besar/kecil .txt dan .TXT.
Parameter
-AsHashTable
Menunjukkan bahwa cmdlet ini mengembalikan grup sebagai tabel hash. Kunci tabel hash adalah nilai properti tempat objek dikelompokkan. Nilai tabel hash adalah objek yang memiliki nilai properti tersebut.
Dengan sendirinya, parameter
Dimulai di PowerShell 7, untuk membuat tabel hash peka huruf besar/kecil, sertakan CaseSensitive dan AsHashtable dalam perintah Anda.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | False |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | AHT |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-AsString
Menunjukkan bahwa cmdlet ini mengonversi kunci tabel hash menjadi string. Secara default, kunci tabel hash adalah instans objek yang dikelompokkan. Parameter ini hanya valid saat digunakan dengan parameter
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | False |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-CaseSensitive
Menunjukkan bahwa cmdlet ini membuat pengelompokan peka huruf besar/kecil. Tanpa parameter ini, nilai properti objek dalam grup mungkin memiliki kasus yang berbeda.
Dimulai di PowerShell 7, untuk membuat tabel hash peka huruf besar/kecil, sertakan CaseSensitive dan AsHashtable dalam perintah Anda.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | False |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-Culture
Menentukan budaya yang akan digunakan saat membandingkan string.
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-InputObject
Menentukan objek yang akan dikelompokkan. Masukkan variabel yang berisi objek, atau ketik perintah atau ekspresi yang mendapatkan objek.
Saat Anda menggunakan parameter InputObject
Untuk mengelompokkan objek dalam koleksi, pipa objek ke Group-Object.
Properti parameter
| Jenis: | PSObject |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | True |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-NoElement
Menunjukkan bahwa cmdlet ini menghilangkan anggota grup dari hasil.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | False |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-Property
Menentukan properti untuk pengelompokan. Objek disusun ke dalam grup bernama berdasarkan nilai properti yang ditentukan. Ketika tidak ada properti yang ditentukan, objek dikelompokkan menurut nilainya atau representasi ToString() dari nilainya. Output diurutkan dalam urutan naik menurut nama grup.
Nilai parameter Properti
- Ekspresi -
<string>atau<script block>
Untuk informasi lebih lanjut, lihat tentang_Properti_Terhitung.
Properti parameter
| Jenis: | Object[] |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | 0 |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
CommonParameters
Cmdlet ini mendukung parameter umum: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, dan -WarningVariable. Untuk informasi selengkapnya, lihat about_CommonParameters.
Input
PSObject
Anda dapat menyalurkan objek apa pun ke cmdlet ini.
Output
GroupInfo
Secara default, cmdlet ini mengembalikan objek GroupInfo.
Hashtable
Saat Anda menggunakan parameter AsHashTable, cmdlet ini mengembalikan objek hashtable.
Catatan
PowerShell menyertakan alias berikut untuk Group-Object:
- Semua platform:
group
Anda dapat menggunakan parameter GroupBy cmdlet pemformatan, seperti Format-Table dan Format-List, untuk mengelompokkan objek. Tidak seperti Group-Object, yang membuat tabel tunggal dengan baris untuk setiap nilai properti, parameter GroupBy membuat tabel untuk setiap nilai properti dengan baris untuk setiap item yang memiliki nilai properti.
Group-Object tidak mengharuskan objek yang dikelompokkan memiliki jenis Microsoft .NET yang sama.
Saat mengelompokkan objek dari jenis .NET yang berbeda, Group-Object menggunakan aturan berikut:
Nama dan Jenis Properti yang Sama.
Jika objek memiliki properti dengan nama yang ditentukan, dan nilai properti memiliki jenis .NET yang sama, nilai properti dikelompokkan menurut aturan yang sama yang akan digunakan untuk objek dengan jenis yang sama.
Nama Properti yang Sama, Jenis Yang Berbeda.
Jika objek memiliki properti dengan nama yang ditentukan, tetapi nilai properti memiliki jenis .NET yang berbeda dalam objek yang berbeda,
Group-Objectmenggunakan jenis .NET dari kemunculan pertama properti sebagai jenis .NET untuk grup properti tersebut. Ketika objek memiliki properti dengan jenis yang berbeda, nilai properti dikonversi ke jenis untuk grup tersebut. Jika konversi jenis gagal, objek tidak disertakan dalam grup.Properti Hilang.
Objek yang tidak memiliki properti tertentu tidak dapat dikelompokkan. Objek yang tidak dikelompokkan muncul di output objek GroupInfo akhir dalam grup bernama
AutomationNull.Value.
Output diurutkan dalam urutan naik menurut nama grup. Item milik setiap grup tidak diurutkan. Mereka tercantum dalam urutan di mana mereka diterima.