Group-Object
Seskupí objekty, které obsahují stejnou hodnotu pro zadané vlastnosti.
Syntax
Default (Výchozí)
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.
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 1 {1, 3, 5, 7, 9, 11, 13, 15, 17, 19}
10 0 {2, 4, 6, 8, 10, 12, 14, 16, 18, 20}
Příklad 3: Seskupení událostí protokolu událostí podle EntryType
Tyto příkazy zobrazují 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 Název představuje hodnoty EventType, které definují skupinu, a sloupec Skupina 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 používá rutinu Get-Process k získání procesů v počítači.
Používá operátor kanálu | k odeslání výsledků do Group-Object, který seskupuje objekty podle hodnoty PriorityClass vlastnost procesu.
Druhý příkaz je stejný jako první, s tím rozdílem, že používá parametr NoElement k odstranění členů skupiny z výstupu. Výsledkem je tabulka s pouze názvem počtu a hodnoty 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 více instancím procesů spuštěných v místním počítači.
Get-Process | Group-Object -Property Name -NoElement | Where {$_.count -gt 1}
Count Name
----- ----
2 csrss
5 svchost
2 winlogon
2 wmiprvse
Příklad 8: Seskupení objektů v tabulce hash
Tento příklad používá parametry AsHashTable a AsString k vrácení skupin v tabulce hash, tj. 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 pomocí zápisu tečky zobrazí hodnoty 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-PSCallStack, Get-PSBreakpoint, Get-PSDrive, Get-PSSession...}
Set {Set-Service, Set-StrictMode, Set-PSDebug, Set-PSSessionConfiguration...}
$A.get
CommandType Name Definition
----------- ---- ----------
Cmdlet Get-PSCallStack Get-PSCallStack [-Verbose] [-Debug] [-ErrorAction <ActionPrefer...
Cmdlet Get-PSBreakpoint Get-PSBreakpoint [[-Id] <Int32[]>] [-Verbose] [-Debug] [-ErrorA...
Cmdlet Get-PSDrive Get-PSDrive [[-Name] <String[]>] [-Scope <String>] [-PSProvider...
...
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.
Vlastnosti parametru
| Typ: | SwitchParameter |
| Default value: | None |
| 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: | 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 |
-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.
Vlastnosti parametru
| Typ: | SwitchParameter |
| 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 |
-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: | 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 |
-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. Pokud chcete vytvořit počítanou vlastnost, vytvořte tabulku hash s klíčem Výraz, který určuje hodnotu bloku řetězce nebo skriptu.
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
Pokud použijete parametr AsHashTable, Group-Object vrátí tabulku hash.
V opačném případě vrátí objekt GroupInfo.
Poznámky
K seskupení objektů můžete použít také parametr GroupBy rutin formátování (například
Format-TableaFormat-List). Na rozdíl odGroup-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-Objectnevyžaduje, aby objekty, které jsou seskupené, byly stejného typu rozhraní Microsoft .NET Framework. Při seskupování objektů různých typů rozhraní .NET FrameworkGroup-Objectpoužívá následující pravidla:Stejné názvy a typy vlastností. Pokud objekty mají vlastnost se zadaným názvem a hodnoty vlastností mají stejný typ rozhraní .NET Framework, hodnoty vlastností jsou seskupeny pomocí stejných pravidel, která by byla použita pro objekty stejného typu.
Stejné názvy vlastností, různé typy. Pokud objekty mají vlastnost se zadaným názvem, ale hodnoty vlastností mají jiný typ rozhraní .NET Framework v různých objektech,
Group-Objectpoužívá typ rozhraní .NET Framework prvního výskytu vlastnosti jako typ rozhraní .NET Framework 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í zahrnut do skupiny.Chybí vlastnosti. Objekty, které nemají zadanou vlastnost, jsou považovány za neseskupitelné. Neskupitelné objekty se zobrazí v konečném GroupInfo výstupu objektu ve skupině s názvem
AutomationNull.Value.