Group-Object

Belirtilen özellikler için aynı değeri içeren nesneleri gruplandırın.

Syntax

Group-Object
     [-NoElement]
     [-AsHashTable]
     [-AsString]
     [-InputObject <PSObject>]
     [[-Property] <Object[]>]
     [-Culture <String>]
     [-CaseSensitive]
     [<CommonParameters>]

Description

Cmdlet, 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 öğe 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 sonra her özellik grubunda bir sonraki özelliğin değerine göre gruplandırın.

Örnekler

Örnek 1: Dosyaları uzantıya göre gruplandırma

Bu örnek, dosyaları $PSHOME dosya adı uzantısına göre altta özyinelemeli olarak alır ve gruplandırır. Çıkış, cmdlet'ine Sort-Object gönderilir ve bu da bunları belirtilen uzantı için bulunan sayı dosyalarına göre sıralar. Boş Ad dizinleri temsil eder.

Bu örnek, grubun üyelerini atlamak için NoElement parametresini kullanı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ı oranlara ve çiftlere göre gruplandırma

Bu örnekte, Property parametresinin değeri olarak betik bloklarının nasıl kullanılacağı gösterilmektedir. Bu komut, 1 ile 20 arasında tamsayıları oranlara ve çifte göre gruplandırarak 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.Diag...}
  722 Information   {System.Diagnostics.Eventing.Reader.EventLogRecord, System.Diag...}
  125 Warning       {System.Diagnostics.Eventing.Reader.EventLogRecord, System.Diag...}

Ö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 için cmdlet'ini kullanır Get-Process ve nesneleri işlem hattına gönderir. Group-Objectnesneleri işlemin PriorityClass özelliğinin değerine göre gruplandırmaktadır.

İkinci örnek, grubun üyelerini çıkıştan kaldırmak için NoElement parametresini kullanır. Sonuç, yalnızca Count ve Name özellik değerine sahip bir tablodur.

Sonuçlar aşağıdaki örnek çıktıda gösterilmiştir.

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 örnek, bir karma tablodaki grupları anahtar-değer çiftleri koleksiyonu olarak döndürmek için AsHashTable ve AsString parametrelerini kullanı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 nokta 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 tabloyu değişkene $A kaydeder.

İkinci komut karma tablosunu içinde $Agörüntüler. Biri cmdlet'ler, Get diğeri cmdlet'ler için iki anahtar-değer çifti Set vardır.

Üçüncü komut, $A.Get içindeki Get anahtarının $Adeğ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                           3.0.0.0    Microsoft.PowerShell.Security
Cmdlet          Get-Alias                         3.1.0.0    Microsoft.PowerShell.Utility
Cmdlet          Get-AppLockerFileInformation      2.0.0.0    AppLocker
Cmdlet          Get-AppLockerPolicy               2.0.0.0    AppLocker
...

Örnek 10: Karma tablolarını hesaplanmış özelliklerle anahtar değerlerine göre gruplandırma

Bu örnek, karma tablo nesnelerini anahtarlarının değerine göre nasıl gruplandırabileceğinizi gösterir. Property parametresi için bir veya daha fazla betik bloğu belirtebilirsiniz. Bu betik bloklarındaki ifadeler, adlandırılmış özelliklerin değerleri gibi girişi gruplandırmak için kullanılır.

@(
    @{ name = 'a' ; weight = 7 }
    @{ name = 'b' ; weight = 1 }
    @{ name = 'c' ; weight = 3 }
    @{ name = 'd' ; weight = 7 }
) | Group-Object -Property { $_.weight } -NoElement

Count Name
----- ----
    2 7
    1 1
    1 3

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.

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.

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.

Nesnesi koleksiyonunu Group-ObjectGroup-Objectadresine 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 özelliklerin değerine göre adlandırılmış gruplar halinde düzenlenir. Hiçbir özellik belirtilmediğinde, nesneler değerlerine veya değerlerinin ToString() gösterimine göre gruplandırılır. Çıkış, grup nesnelerinin oluşturulma sırasına göre sunulur.

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

PSObject

Herhangi bir nesneyi bu cmdlet'e yöneltebilirsiniz.

Çıkışlar

GroupInfo

Varsayılan olarak, bu cmdlet bir GroupInfo nesnesi döndürür.

Hashtable

AsHashTable parametresini kullandığınızda, bu cmdlet bir Hashtable nesnesi döndürür.

Notlar

Windows PowerShell için aşağıdaki diğer adları Group-Objectiçerir:

  • group

Nesneleri gruplandırmak için ve Format-Listgibi 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-Objectolarak, 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 türünde olmasını gerektirmez. Farklı .NET türlerinde nesneleri gruplandırırken aşağıdaki Group-Object kuralları kullanır:

  • Aynı Özellik Adları ve Türleri.

    Nesnelerin belirtilen ada sahip bir özelliği varsa ve özellik değerleri aynı .NET türüne sahipse, özellik değerleri aynı türdeki nesneler için kullanılacak aynı kurallara göre 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 türüne sahipse, Group-Object özelliğin ilk oluşumunun .NET türünü bu özellik grubu için .NET türü olarak kullanır. Bir nesnenin farklı türde bir özelliği olduğunda, özellik değeri bu 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.Valuebir gruptaki son GroupInfo nesne çıkışında görünür.

Çıkış grupları, grubun oluşturulma sırasına göre sunulur. Her gruba ait öğeler sıralanmaz. Bunlar, teslim alınma sırasına göre listelenir.