Group-Object
Mengelompokkan objek yang berisi nilai yang sama untuk properti yang ditentukan.
Sintaks
Group-Object
[-NoElement]
[-AsHashTable]
[-AsString]
[-InputObject <PSObject>]
[[-Property] <Object[]>]
[-Culture <String>]
[-CaseSensitive]
[<CommonParameters>]
Deskripsi
Group-Object
Cmdlet 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-tama kelompokkan menurut nilai properti pertama, lalu, dalam setiap grup properti, properti 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 Sort-Object
cmdlet, 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 . Perintah ini menampilkan bilangan bulat dari 1 hingga 20, dikelompokkan menurut ganjil dan genap.
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 hashtable weight
.
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, yang dikelompokkan menurut EntryType.
Dalam output, kolom Hitung 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 ini mengelompokkan proses di komputer menurut kelas prioritas.
Perintah pertama menggunakan Get-Process
cmdlet untuk mendapatkan proses di komputer dan mengirim objek ke bawah alur. Group-Object
mengelompokkan objek menurut nilai properti PriorityClass dari proses.
Contoh kedua menggunakan parameter NoElement untuk menghapus anggota grup dari output. Hasilnya adalah tabel hanya dengan nilai properti Hitungan dan 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 Get
cmdlet dan Set
dalam sesi, mengelompokkannya berdasarkan kata kerja, mengembalikan grup sebagai tabel hash, dan menyimpan tabel hash dalam $A
variabel.
Perintah kedua menampilkan tabel hash di $A
. Ada dua pasangan kunci-nilai, satu untuk Get
cmdlet dan satu untuk Set
cmdlet.
Perintah ketiga menggunakan notasi titik, $A.Get
untuk menampilkan nilai Kunci dapatkan di $A
. Nilainya adalah 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 C:\Files
direktori dan mengirim objek System.IO.FileInfo ke bawah alur. Group-Object
mengelompokkan objek menggunakan Ekstensi nilai Properti. Parameter CaseSensitive dan AsHashTable membuat tabel hash dan kunci dikelompokkan menggunakan kunci .txt
peka huruf besar/kecil 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 AsHashTable mengembalikan setiap tabel hash di mana setiap kunci adalah instans objek yang dikelompokkan. Saat digunakan dengan parameter AsString , kunci dalam tabel hash adalah string.
Dimulai di PowerShell 7, untuk membuat tabel hash peka huruf besar/kecil, sertakan CaseSensitive dan AsHashtable dalam perintah Anda.
Type: | SwitchParameter |
Aliases: | AHT |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 AsHashTable .
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Culture
Menentukan budaya yang akan digunakan saat membandingkan string.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 mengirimkan kumpulan objek ke Group-Object
, Group-Object
menerima satu objek yang mewakili koleksi. Akibatnya, ia membuat satu grup dengan objek tersebut sebagai anggotanya.
Untuk mengelompokkan objek dalam koleksi, pipa objek ke Group-Object
.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-NoElement
Menunjukkan bahwa cmdlet ini menghilangkan anggota grup dari hasil.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 ToString()
representasi nilainya. Output diurutkan dalam urutan naik menurut nama grup.
Nilai parameter Properti dapat menjadi properti terhitung baru. Properti terhitung dapat berupa blok skrip atau tabel hash. Pasangan kunci-nilai yang valid adalah:
- Ekspresi -
<string>
atau<script block>
Untuk informasi selengkapnya, lihat about_Calculated_Properties.
Type: | Object[] |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Input
Anda dapat menyalurkan objek apa pun ke cmdlet ini.
Output
Secara default, cmdlet ini mengembalikan objek GroupInfo .
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 dari 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
gunakan 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-Object
menggunakan 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.
Link Terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk