Group-Object
Belirtilen özellikler için aynı değeri içeren nesneleri Gruplar.
Syntax
Group-Object
[-NoElement]
[-AsHashTable]
[-AsString]
[-InputObject <PSObject>]
[[-Property] <Object[]>]
[-Culture <String>]
[-CaseSensitive]
[<CommonParameters>]
Description
cmdlet'i Group-Object
, nesneleri belirtilen özelliğin değerine göre gruplar halinde görüntüler.
Group-Object
her özellik değeri için bir satır içeren bir tablo ve bu değere sahip öğelerin sayısını görüntüleyen bir sütun döndürür.
Birden fazla özellik belirtirseniz, Group-Object
önce bunları ilk özelliğin değerlerine göre gruplandırın ve ardından her özellik grubu içinde bir sonraki özelliğin değerine göre gruplandırılır.
PowerShell 7'de başlayarak CaseSensitiveGroup-Object
ve AsHashtable parametrelerini birleştirerek büyük/küçük harfe duyarlı bir karma tablo oluşturabilirsiniz. Karma tablo anahtarları büyük/küçük harfe duyarlı karşılaştırmalar kullanır ve System.Collections.Hashtable nesnesinin çıkışını oluşturur.
Örnekler
Örnek 1: Dosyaları uzantıya göre gruplandırma
Bu örnek, altındaki dosyaları $PSHOME
yinelemeli olarak alır ve dosya adı uzantısına göre gruplandırır. Çıkış, cmdlet'ine Sort-Object
gönderilir ve bu cmdlet, bunları verilen uzantı için bulunan sayı dosyalarına göre sıralar. Boş Ad dizinleri temsil eder.
Bu örnekte, grubun üyelerini atlarken NoElement parametresi kullanılır.
$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
...
Örnek 2: Tamsayıları oran ve çiftlere göre gruplandırma
Bu örnekte , Özellik parametresinin değeri olarak betik bloklarının nasıl kullanılacağı gösterilmektedir. Bu komut, 1 ile 20 arasında olan tamsayıları, oran ve çifte göre gruplandırılmış olarak görüntüler.
1..20 | Group-Object -Property {$_ % 2}
Count Name Group
----- ---- -----
10 0 {2, 4, 6, 8...}
10 1 {1, 3, 5, 7...}
Örnek 3: Olay günlüğü olaylarını EntryType'a göre gruplandırma
Bu örnek, System olay günlüğünde EntryType'a göre gruplandırılmış en son 1.000 girdiyi görüntüler.
Çıktıda , Count sütunu her gruptaki girdi sayısını temsil eder. Ad sütunu, bir grubu tanımlayan EventType değerlerini temsil eder. Grup sütunu her gruptaki nesneleri temsil eder.
Get-WinEvent -LogName System -MaxEvents 1000 | Group-Object -Property LevelDisplayName
Count Name Group
----- ---- -----
153 Error {System.Diagnostics.Eventing.Reader.EventLogRecord, System.Diagnostics...}
722 Information {System.Diagnostics.Eventing.Reader.EventLogRecord, System.Diagnostics...}
125 Warning {System.Diagnostics.Eventing.Reader.EventLogRecord, System.Diagnostics...}
Örnek 4: İşlemleri öncelik sınıfına göre gruplandırma
Bu örnekte NoElement parametresinin etkisi gösterilmektedir. Bu komutlar bilgisayardaki işlemleri öncelik sınıfına göre gruplandırıyor.
İlk komut, bilgisayardaki işlemleri almak ve nesneleri işlem hattına göndermek için cmdlet'ini kullanır Get-Process
. Group-Object
nesneleri işlemin PriorityClass özelliğinin değerine göre gruplandırın.
İkinci örnek, grubun üyelerini çıkıştan kaldırmak için NoElement parametresini kullanır. Sonuç, yalnızca Count ve Name özellik değerini içeren bir tablodur.
Sonuçlar aşağıdaki örnek çıktıda gösterilir.
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
Örnek 5: İşlemleri ada göre gruplandırma
Aşağıdaki örnek, yerel bilgisayarda çalışan birden çok işlem örneğini gruplandırmak için kullanır Group-Object
. Where-Object
birden fazla örneği olan işlemleri görüntüler.
Get-Process | Group-Object -Property Name -NoElement | Where-Object {$_.Count -gt 1}
Count Name
----- ----
2 csrss
5 svchost
2 winlogon
2 wmiprvse
Örnek 6: Karma tablodaki nesneleri gruplandırma
Bu örnekte, bir karma tablodaki grupları anahtar-değer çiftleri koleksiyonu olarak döndürmek için AsHashTable ve AsString parametreleri kullanılır.
Sonuçta elde edilen karma tabloda her özellik değeri bir anahtardır ve grup öğeleri değerlerdir. Her anahtar karma tablo nesnesinin bir özelliği olduğundan, değerleri görüntülemek için noktalı gösterimi kullanabilirsiniz.
İlk komut oturumdaki Get
ve Set
cmdlet'lerini alır, fiillere göre gruplandırır, grupları karma tablo olarak döndürür ve karma tablosunu değişkene $A
kaydeder.
İkinci komut, içinde karma tablosunu $A
görüntüler. Biri cmdlet'ler ve diğeri cmdlet'ler için Get
iki anahtar-değer çifti Set
vardır.
Üçüncü komut, $A.Get
içindeki Get tuşunun $A
değerlerini görüntülemek için noktalı gösterimi kullanır. Değerler CmdletInfo nesnesidir. AsString parametresi, gruplardaki nesneleri dizelere dönüştürmez.
$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
...
Örnek 7: Büyük/küçük harfe duyarlı karma tablo İçerik Oluşturucu
Bu örnek CaseSensitive ve AsHashTable parametrelerini birleştirerek büyük/küçük harfe duyarlı bir karma tablo oluşturur. Örnekteki dosyaların ve .TXT
uzantıları .txt
vardır.
$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}
değişkeni System.Collections.Hashtable$hash
nesnesini depolar. Get-ChildItem
dizinden C:\Files
dosya adlarını alır ve System.IO.FileInfo nesnelerini işlem hattına gönderir. Group-Object
, Uzantı Özellik değerini kullanarak nesneleri gruplandırmaktadır. CaseSensitive ve AsHashTable parametreleri karma tabloyu oluşturur ve anahtarlar büyük/küçük harfe duyarlı anahtarlar .txt
ve .TXT
kullanılarak gruplandırılır.
Parametreler
-AsHashTable
Bu cmdlet'in grubu karma tablo olarak döndürdüğünü gösterir. Karma tablosunun anahtarları, nesnelerin gruplandırıldığı özellik değerleridir. Karma tablosunun değerleri, bu özellik değerine sahip nesnelerdir.
AsHashTable parametresi tek başına, her anahtarın gruplandırılmış nesnenin bir örneği olduğu her karma tabloyu döndürür. AsString parametresiyle kullanıldığında, karma tablosundaki anahtarlar dizelerdir.
PowerShell 7'de başlayarak büyük/küçük harfe duyarlı karma tablolar oluşturmak için, komutunuzda CaseSensitive ve AsHashtable'ı ekleyin.
Type: | SwitchParameter |
Aliases: | AHT |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-AsString
Bu cmdlet'in karma tablo anahtarlarını dizelere dönüştürdüğünü gösterir. Karma tablo anahtarları varsayılan olarak gruplandırılmış nesnenin örnekleridir. Bu parametre yalnızca AsHashTable parametresiyle kullanıldığında geçerlidir.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CaseSensitive
Bu cmdlet'in gruplandırma büyük/küçük harfe duyarlı olduğunu gösterir. Bu parametre olmadan, bir gruptaki nesnelerin özellik değerleri farklı durumlara sahip olabilir.
PowerShell 7'de başlayarak büyük/küçük harfe duyarlı karma tablolar oluşturmak için, komutunuzda CaseSensitive ve AsHashtable'ı ekleyin.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Culture
Dizeleri karşılaştırırken kullanılacak kültürü belirtir.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Gruplandıracak nesneleri belirtir. Nesneleri içeren bir değişken girin veya nesneleri alan bir komut veya ifade yazın.
öğesine bir nesne Group-Object
Group-Object
koleksiyonu göndermek için InputObject parametresini kullandığınızda, koleksiyonu temsil eden bir nesne alır. Sonuç olarak, bu nesnenin üyesi olarak tek bir grup oluşturur.
Bir koleksiyondaki nesneleri gruplandırmak için, nesneleri öğesine yöneltin Group-Object
.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-NoElement
Bu cmdlet'in bir grubun üyelerini sonuçlardan atladığını gösterir.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Property
Gruplandırma özelliklerini belirtir. Nesneler, belirtilen özelliğin değerine göre gruplar halinde düzenlenir.
Property parametresinin değeri yeni bir hesaplanmış özellik olabilir. Hesaplanan özellik bir betik bloğu veya karma tablo olabilir. Geçerli anahtar-değer çiftleri şunlardır:
- İfade -
<string>
veya<script block>
Daha fazla bilgi için bkz. about_Calculated_Properties.
Type: | Object[] |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Girişler
Herhangi bir nesneyi öğesine kanal oluşturabilirsiniz Group-Object
.
Çıkışlar
Microsoft.PowerShell.Commands.GroupInfo or System.Collections.Hashtable
AsHashTable parametresini kullandığınızda, Group-Object
bir Hashtable nesnesi döndürür.
Aksi takdirde, bir GroupInfo nesnesi döndürür.
Notlar
Nesneleri gruplandırmak için ve Format-List
gibi Format-Table
biçimlendirme cmdlet'lerinin GroupBy parametresini kullanabilirsiniz. Her özellik değeri için bir satır içeren tek bir tablo oluşturan değerinden farklı Group-Object
olarak , GroupBy parametreleri her özellik değeri için özellik değerine sahip her öğe için bir satır içeren bir tablo oluşturur.
Group-Object
gruplandırılan nesnelerin aynı Microsoft .NET Core türünde olmasını gerektirmez. Farklı .NET Core türlerinde Group-Object
nesneleri gruplandırırken aşağıdaki kuralları kullanır:
Aynı Özellik Adları ve Türleri.
Nesnelerin belirtilen ada sahip bir özelliği varsa ve özellik değerleri aynı .NET Core türüne sahipse, özellik değerleri aynı türdeki nesneler için kullanılacak aynı kurallar kullanılarak gruplandırılır.
Aynı Özellik Adları, Farklı Türler.
Nesnelerin belirtilen ada sahip bir özelliği varsa, ancak özellik değerleri farklı nesnelerde farklı bir .NET Core türüne sahipse,
Group-Object
özelliğin ilk geçtiği .NET Core türünü bu özellik grubu için .NET Core türü olarak kullanır. Bir nesnenin farklı türde bir özelliği olduğunda, özellik değeri o grubun türüne dönüştürülür. Tür dönüştürme başarısız olursa, nesne gruba dahil değildir.Eksik Özellikler.
Belirtilen özelliğe sahip olmayan nesneler gruplandırılamaz. Gruplandırlanmamış nesneler, adlı
AutomationNull.Value
bir gruptaki son GroupInfo nesne çıkışında görünür.