Sdílet prostřednictvím


Group-Object

Seskupí objekty, které obsahují stejnou hodnotu pro zadané vlastnosti.

Syntax

HashTable

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

Description

Rutina Group-Object zobrazuje objekty ve skupinách na základě hodnoty zadané vlastnosti. Group-Object vrátí tabulku s jedním řádkem pro každou hodnotu vlastnosti a sloupec, který zobrazuje počet položek s danou hodnotou.

Pokud zadáte více než jednu vlastnost, Group-Object je nejprve seskupí podle hodnot první vlastnosti a pak v rámci každé skupiny vlastností seskupí podle hodnoty další vlastnosti.

Počínaje PowerShellem 7 může Group-Object zkombinovat Malá a velká a malá písmena a parametry AsHashtable a vytvořit tabulku hash s rozlišováním velkých a malých písmen. Klíče tabulky hash používají porovnání s rozlišováním velkých a malých písmen a výstupem System.Collections.Hashtable objektu.

Příklady

Příklad 1: Seskupení souborů podle přípony

Tento příklad rekurzivně získá soubory pod $PSHOME a seskupí je podle přípony názvu souboru. Výstup se odešle do rutiny Sort-Object, která je seřadí podle souborů počtu nalezených pro dané rozšíření. Prázdný Název představuje adresáře.

Tento příklad používá parametr NoElement vynechat členy skupiny.

$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
...

Příklad 2: Seskupení celých čísel podle pravděpodobnosti a sudých

Tento příklad ukazuje, jak používat bloky skriptu jako hodnotu Vlastnost parametru. Tento příkaz zobrazí celá čísla od 1 do 20 seskupených podle pravděpodobnosti a dokonce i.

1..20 | Group-Object -Property {$_ % 2}
Count Name                      Group
----- ----                      -----
   10 0                         {2, 4, 6, 8...}
   10 1                         {1, 3, 5, 7...}

Příklad 3: Seskupení událostí protokolu událostí podle EntryType

Tento příklad zobrazí 1 000 nejnovějších položek v protokolu událostí systému seskupené podle EntryType.

Ve výstupu sloupec Count představuje počet položek v každé skupině. Sloupec Name představuje hodnoty EventType definující skupinu. Sloupec Group představuje objekty v každé skupině.

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...}

Příklad 4: Seskupení procesů podle třídy priority

Tento příklad ukazuje účinek NoElement parametru. Tyto příkazy seskupují procesy v počítači podle třídy priority.

První příkaz pomocí rutiny Get-Process získá procesy v počítači a odešle objekty dolů kanálu. Group-Objectseskupí objekty podle hodnoty vlastnosti PriorityClass procesu.

Druhý příklad používá parametr NoElement k odstranění členů skupiny z výstupu. Výsledkem je tabulka, která obsahuje pouze Počet a Název hodnotu vlastnosti.

Výsledky se zobrazí v následujícím ukázkovém výstupu.

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

Příklad 5: Seskupení procesů podle názvu

Následující příklad používá Group-Object k seskupení více instancí procesů spuštěných v místním počítači. Where-Object zobrazí procesy s více než jednou instancí.

Get-Process | Group-Object -Property Name -NoElement | Where-Object {$_.Count -gt 1}
Count Name
----- ----
2     csrss
5     svchost
2     winlogon
2     wmiprvse

Příklad 6: Seskupení objektů v tabulce hash

Tento příklad používá parametry AsHashTable a AsString k vrácení skupin v tabulce hash jako kolekce párů klíč-hodnota.

Ve výsledné tabulce hash je každá hodnota vlastnosti klíčem a prvky skupiny jsou hodnoty. Vzhledem k tomu, že každý klíč je vlastností objektu tabulky hash, můžete k zobrazení hodnot použít tečku.

První příkaz získá Get a Set rutiny v relaci, seskupí je pomocí příkazu, vrátí skupiny jako tabulku hash a uloží tabulku hash do proměnné $A.

Druhý příkaz zobrazí tabulku hash v $A. Existují dva páry klíč-hodnota, jeden pro rutiny Get a jeden pro rutiny Set.

Třetí příkaz používá zápis tečky, $A.Get k zobrazení hodnot klíče Get v $A. Hodnoty jsou RutinInfo objektu. Parametr AsString nepřevádí objekty ve skupinách na řetězce.

$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
...

Příklad 7: Vytvoření zatřiďovací tabulky rozlišující velká a malá písmena

Tento příklad kombinuje CaseSensitive a AsHashTable parametry pro vytvoření tabulky hash rozlišujících malá a velká písmena. Soubory v příkladu mají přípony .txt a .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}

Proměnná $hash ukládá objekt System.Collections.Hashtable. Get-ChildItem získá názvy souborů z adresáře C:\Files a odešle System.IO.FileInfo objekty mimo kanál. Group-Object seskupí objekty pomocí hodnoty vlastnosti rozšířenívlastnosti . Parametry CaseSensitive a AsHashTable vytvoří tabulku hash a klíče se seskupí pomocí klíčů citlivých na malá a velká písmena .txt a .TXT.

Parametry

-AsHashTable

Označuje, že tato rutina vrátí skupinu jako tabulku hash. Klíče tabulky hash jsou hodnoty vlastností, podle kterých jsou objekty seskupené. Hodnoty tabulky hash jsou objekty, které mají danou hodnotu vlastnosti.

Samotný parametr AsHashTable vrátí každou tabulku hash, ve které je každý klíč instancí seskupovaného objektu. Při použití s parametrem AsString jsou klíče v tabulce hash řetězce.

Počínaje PowerShellem 7 můžete vytvořit tabulky hash s rozlišováním malých a velkých písmen a zahrnout do příkazu a AsHashtable.

Vlastnosti parametru

Typ:SwitchParameter
Default value:False
Podporuje zástupné znaky:False
DontShow:False
Aliasy:AHT

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-AsString

Označuje, že tato rutina převádí klíče tabulky hash na řetězce. Ve výchozím nastavení jsou klíče tabulky hash instance seskupených objektů. Tento parametr je platný pouze při použití s parametrem AsHashTable.

Vlastnosti parametru

Typ:SwitchParameter
Default value:False
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-CaseSensitive

Označuje, že tato rutina rozlišují malá a velká písmena. Bez tohoto parametru můžou mít hodnoty vlastností objektů ve skupině různé případy.

Počínaje PowerShellem 7 můžete vytvořit tabulky hash s rozlišováním malých a velkých písmen a zahrnout do příkazu a AsHashtable.

Vlastnosti parametru

Typ:SwitchParameter
Default value:False
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-Culture

Určuje jazykovou verzi, která se má použít při porovnávání řetězců.

Vlastnosti parametru

Typ:String
Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-InputObject

Určuje objekty, které se mají seskupit. Zadejte proměnnou, která obsahuje objekty, nebo zadejte příkaz nebo výraz, který objekty získá.

Když použijete parametr InputObject k odeslání kolekce objektů do Group-Object, Group-Object obdrží jeden objekt, který představuje kolekci. V důsledku toho vytvoří jednu skupinu s tímto objektem jako jejím členem.

Chcete-li seskupit objekty v kolekci, předaný objekty do Group-Object.

Vlastnosti parametru

Typ:PSObject
Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:True
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-NoElement

Označuje, že tato rutina vynechá členy skupiny z výsledků.

Vlastnosti parametru

Typ:SwitchParameter
Default value:False
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-Property

Určuje vlastnosti pro seskupování. Objekty jsou uspořádány do skupin na základě hodnoty zadané vlastnosti.

Hodnota parametru Vlastnost může být nově vypočítaná vlastnost. Počítaná vlastnost může být blok skriptu nebo tabulka hash. Platné páry klíč-hodnota jsou:

  • Výraz – <string> nebo <script block>

Další informace naleznete v dokumentaci about_Calculated_Properties.

Vlastnosti parametru

Typ:

Object[]

Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:0
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

CommonParameters

Tato rutina podporuje běžné parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction a -WarningVariable. Další informace najdete v about_CommonParameters.

Vstupy

PSObject

Do Group-Objectmůžete převést libovolný objekt .

Výstupy

Microsoft.PowerShell.Commands.GroupInfo or System.Collections.Hashtable

Při použití parametru Group-ObjectAsHashTable vrátí objekt Hashtable. V opačném případě vrátí objekt GroupInfo.

Poznámky

K seskupení objektů můžete použít parametr GroupBy rutin formátování, například Format-Table a Format-List. Na rozdíl od Group-Object, který vytvoří jednu tabulku s řádkem pro každou hodnotu vlastnosti, GroupBy parametry vytvoří tabulku pro každou hodnotu vlastnosti s řádkem pro každou položku, která má hodnotu vlastnosti.

Group-Object nevyžaduje, aby seskupené objekty byly stejného typu Microsoft .NET Core. Při seskupování objektů různých typů .NET Core používá následující pravidla: Group-Object

  • Stejné názvy a typy vlastností.

    Pokud mají objekty vlastnost se zadaným názvem a hodnoty vlastností mají stejný typ .NET Core, hodnoty vlastností se seskupí pomocí stejných pravidel, která by se použila pro objekty stejného typu.

  • Stejné názvy vlastností, různé typy.

    Pokud mají objekty vlastnost se zadaným názvem, ale hodnoty vlastností mají v různých objektech jiný typ .NET Core, Group-Object použije se typ .NET Core prvního výskytu vlastnosti jako typ .NET Core pro danou skupinu vlastností. Pokud má objekt vlastnost s jiným typem, hodnota vlastnosti je převedena na typ pro tuto skupinu. Pokud převod typu selže, objekt není součástí skupiny.

  • Chybí vlastnosti.

    Objekty, které nemají zadanou vlastnost, nelze seskupit. Objekty, které nejsou seskupené, se zobrazí v konečném GroupInfo výstup objektu ve skupině s názvem AutomationNull.Value.