Group-Object
Grupperar objekt som innehåller samma värde för angivna egenskaper.
Syntax
Group-Object
[[-Property] <Object[]>]
[-NoElement]
[-AsHashTable]
[-AsString]
[-InputObject <PSObject>]
[-Culture <String>]
[-CaseSensitive]
[<CommonParameters>]
Description
Cmdleten Group-Object
visar objekt i grupper baserat på värdet för en angiven egenskap.
Group-Object
returnerar en tabell med en rad för varje egenskapsvärde och en kolumn som visar antalet objekt med det värdet.
Om du anger mer än en egenskap grupperar Group-Object
först dem efter värdena för den första egenskapen och grupperar dem sedan efter värdet för nästa egenskap inom varje egenskapsgrupp.
Exempel
Exempel 1: Gruppera filer efter tillägg
Det här exemplet hämtar rekursivt filerna under $PSHOME
och grupperar dem efter filnamnstillägg. Utdata skickas till cmdleten Sort-Object
som sorterar dem efter antalet filer som hittas för det angivna tillägget. Det tomma Namn representerar kataloger.
I det här exemplet används parametern NoElement för att utelämna medlemmarna i gruppen.
$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
...
Exempel 2: Gruppera heltal efter odds och jämnare
Det här exemplet visar hur du använder skriptblock som värdet för parametern Property.
Det här kommandot visar heltal från 1 till 20, grupperade efter odds och till och med.
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}
Exempel 3: Gruppera händelselogghändelser efter EntryType
Dessa kommandon visar de 1 000 senaste posterna i systemhändelseloggen, grupperade efter EntryType.
I utdata representerar kolumnen Count antalet poster i varje grupp, kolumnen Name representerar EventType värden som definierar en grupp och kolumnen Group representerar objekten i varje grupp.
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.�
Exempel 4: Gruppera processer efter prioritetsklass
Det här exemplet visar effekten av parametern NoElement. Dessa kommandon grupperar processerna på datorn efter prioritetsklass.
Det första kommandot använder cmdleten Get-Process
för att hämta processerna på datorn.
Den använder en pipelineoperator |
för att skicka resultatet till Group-Object
, som grupperar objekten efter värdet för egenskapen PriorityClass i processen.
Det andra kommandot är identiskt med det första, förutom att det använder parametern NoElement för att eliminera medlemmarna i gruppen från utdata. Resultatet är en tabell med endast namn på antal och egenskapsvärde.
Resultaten visas i följande exempelutdata.
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
Exempel 5: Gruppera processer efter namn
I följande exempel används Group-Object
till flera instanser av processer som körs på den lokala datorn.
Get-Process | Group-Object -Property Name -NoElement | Where {$_.count -gt 1}
Count Name
----- ----
2 csrss
5 svchost
2 winlogon
2 wmiprvse
Exempel 8: Gruppera objekt i en hash-tabell
I det här exemplet används parametrarna AsHashTable och AsString för att returnera grupperna i en hashtabell, det vill säga som en samling nyckel/värde-par.
I den resulterande hash-tabellen är varje egenskapsvärde en nyckel och gruppelementen är värdena. Eftersom varje nyckel är en egenskap för hash-tabellobjektet kan du använda punkt notation för att visa värdena.
Det första kommandot hämtar cmdletarna Get
och Set
i sessionen, grupperar dem efter verb, returnerar grupperna som en hashtabell och sparar hashtabellen i variabeln $A
.
Det andra kommandot visar hash-tabellen i $A
.
Det finns två nyckel/värde-par, ett för Get
-cmdletar och ett för Set
cmdletar.
Det tredje kommandot använder punktkommentering för att visa värdena för nyckeln Hämta i $A
.
Värdena är CmdletInfo-objekt.
Parametern AsString konverterar inte objekten i grupperna till strängar.
$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...
...
Parametrar
-AsHashTable
Anger att denna cmdlet returnerar gruppen som en hash-tabell. Nycklarna i hash-tabellen är de egenskapsvärden som objekten grupperas efter. Värdena i hash-tabellen är de objekt som har det egenskapsvärdet.
I sig själv returnerar parametern AsHashTable varje hashtabell där varje nyckel är en instans av det grupperade objektet. När de används med parametern AsString är nycklarna i hash-tabellen strängar.
Typ: | SwitchParameter |
Alias: | AHT |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-AsString
Anger att denna cmdlet konverterar hashtabellnycklarna till strängar. Som standard är hashtabellnycklarna instanser av det grupperade objektet. Den här parametern är endast giltig när den används med parametern AsHashTable.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-CaseSensitive
Anger att denna cmdlet gör gruppering skiftlägeskänslig. Utan den här parametern kan egenskapsvärdena för objekt i en grupp ha olika fall.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Culture
Anger vilken kultur som ska användas vid jämförelse av strängar.
Typ: | String |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-InputObject
Anger vilka objekt som ska grupperas. Ange en variabel som innehåller objekten eller skriv ett kommando eller uttryck som hämtar objekten.
När du använder parametern InputObject för att skicka en samling objekt till Group-Object
tar Group-Object
emot ett objekt som representerar samlingen.
Det innebär att den skapar en enda grupp med objektet som medlem.
Gruppera objekten i en samling genom att skicka objekten till Group-Object
.
Typ: | PSObject |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | False |
-NoElement
Anger att denna cmdlet utelämnar medlemmarna i en grupp från resultaten.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Property
Anger egenskaperna för gruppering. Objekten ordnas i grupper baserat på värdet för den angivna egenskapen.
Värdet för parametern Property kan vara en ny beräknad egenskap. Skapa en beräknad egenskap genom att skapa en hash-tabell med en uttryck nyckel som anger ett sträng- eller skriptblockvärde.
Typ: | Object[] |
Position: | 0 |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
Indata
Du kan skicka valfritt objekt till Group-Object
.
Utdata
Microsoft.PowerShell.Commands.GroupInfo or System.Collections.Hashtable
När du använder parametern AsHashTable returnerar Group-Object
en hash-tabell.
Annars returneras ett GroupInfo- objekt.
Kommentarer
Du kan också använda parametern GroupBy för formaterings-cmdletar (till exempel
Format-Table
ochFormat-List
) för att gruppera objekt. Till skillnad frånGroup-Object
, som skapar en enskild tabell med en rad för varje egenskapsvärde, skapar parametrarna GroupBy en tabell för varje egenskapsvärde med en rad för varje objekt som har egenskapsvärdet.Group-Object
kräver inte att objekten som grupperas är av samma Microsoft .NET Framework-typ. När du grupperar objekt av olika .NET Framework-typer använderGroup-Object
följande regler:Samma egenskapsnamn och typer. Om objekten har en egenskap med det angivna namnet och egenskapsvärdena har samma .NET Framework-typ grupperas egenskapsvärdena med samma regler som används för objekt av samma typ.
Samma egenskapsnamn, olika typer. Om objekten har en egenskap med det angivna namnet, men egenskapsvärdena har en annan .NET Framework-typ i olika objekt, använder
Group-Object
.NET Framework-typen för den första förekomsten av egenskapen som .NET Framework-typ för den egenskapsgruppen. När ett objekt har en egenskap med en annan typ konverteras egenskapsvärdet till typen för den gruppen. Om typkonverteringen misslyckas inkluderas inte objektet i gruppen.Egenskaper saknas. Objekt som inte har en angiven egenskap anses vara ogrupperbara. Ogrupperbara objekt visas i den sista GroupInfo objektutdata i en grupp med namnet
AutomationNull.Value
.