Ce face Group-Object
Group-Object (alias group) întoarce câte un obiect GroupInfo pentru fiecare valoare distinctă, cu proprietățile Count (câte elemente), Name (valoarea, ca text) și Group (elementele propriu-zise). Grupurile ies sortate crescător după nume; elementele din grup rămân în ordinea în care au venit.
Fără -Property, obiectele se grupează după valoarea lor (util pentru liste de șiruri). -NoElement păstrează doar numărătoarea, iar -AsHashTable întoarce un hashtable în care cheia este valoarea și valoarea este lista de obiecte, ca să poți accesa rapid un grup: $grupe['Cluj'].
Gruparea textului nu ține cont implicit de majuscule. Din PowerShell 7, -CaseSensitive împreună cu -AsHashTable creează un hashtable cu chei sensibile la majuscule.
Parametri
| Parametru | Descriere |
|---|---|
-Property |
Proprietatea (sau blocul de script) după care se grupează; pot fi mai multe. |
-NoElement |
Omite coloana Group; rămân doar Count și Name. |
-AsHashTable |
Întoarce un hashtable: cheie = valoarea grupului, valoare = obiectele. |
-AsString |
Cu -AsHashTable, cheile devin șiruri. |
-CaseSensitive |
Grupare care ține cont de majuscule. |
-Culture |
Cultura folosită la compararea textului. |
Ce returnează
Obiecte GroupInfo (Count, Name, Group, Values) sau un Hashtable cu -AsHashTable.
Exemple
Exemplul 1: Câte apariții are fiecare oraș
Fără -Property, șirurile se grupează după valoarea lor.
'Iași', 'Cluj', 'Iași', 'Brașov', 'Cluj', 'Iași' | Group-Object
Ieșire în terminal
Count Name Group
----- ---- -----
1 Brașov {Brașov}
2 Cluj {Cluj, Cluj}
3 Iași {Iași, Iași, Iași}
Exemplul 2: Grupare după proprietate, doar cu numărătoarea
-NoElement scoate lista elevilor; sortăm apoi grupurile după Count.
$elevi = @(
[pscustomobject]@{ Nume = 'Ana'; Oras = 'Iași' }
[pscustomobject]@{ Nume = 'Mihai'; Oras = 'Cluj' }
[pscustomobject]@{ Nume = 'Ioana'; Oras = 'Iași' }
[pscustomobject]@{ Nume = 'Radu'; Oras = 'Brașov' }
[pscustomobject]@{ Nume = 'Elena'; Oras = 'Cluj' }
[pscustomobject]@{ Nume = 'Bogdan'; Oras = 'Iași' }
)
$elevi | Group-Object -Property Oras -NoElement | Sort-Object -Property Count -Descending
Ieșire în terminal
Count Name
----- ----
3 Iași
2 Cluj
1 Brașov
Exemplul 3: -AsHashTable: acces direct la un grup
Cheia este orașul; valoarea este lista elevilor din acel oraș.
$elevi = @(
[pscustomobject]@{ Nume = 'Ana'; Oras = 'Iași' }
[pscustomobject]@{ Nume = 'Mihai'; Oras = 'Cluj' }
[pscustomobject]@{ Nume = 'Elena'; Oras = 'Cluj' }
)
$grupe = $elevi | Group-Object -Property Oras -AsHashTable
$grupe['Cluj'].Nume
Ieșire în terminal
Mihai
Elena
Greșeli frecvente
Namedin rezultat este text, chiar dacă ai grupat după numere:(1..4 | Group-Object { $_ % 2 })[0].Nameeste'0', nu0.- Coloana
Groupse trunchiază la afișare pentru grupuri mari; pentru elemente folosește$grup.Groupsau-AsHashTable, nu textul afișat. - Grupurile nu sunt sortate după mărime: dacă vrei „cele mai frecvente” primele, adaugă
| Sort-Object Count -Descending.
Comenzi înrudite
Sort-Object: Sortează obiectele după una sau mai multe proprietăți, crescător sau descrescător, opțional doar primele N.Measure-Object: Numără obiectele și calculează suma, media, minimul și maximul unei proprietăți, sau numără rândurile, cuvintele și caracterele unui text.Hashtable (@{}): Un hashtable ține perechi cheie-valoare; [ordered] păstrează ordinea cheilor, iar [pscustomobject] transformă perechile într-un obiect.Select-Object: Alege doar anumite proprietăți ale obiectelor, adaugă proprietăți calculate sau păstrează primele, ultimele ori unicele elemente.Format-Table: Afișează obiectele ca tabel, cu coloanele alese de tine, inclusiv coloane calculate.