Group-Object - PowerShell Befehl Hilfe und Beispiele

Gruppiert Objekte, die für die angegebenen Eigenschaften denselben Wert enthalten. (Group-Object)


NAME
Group-Object
ÜBERSICHT
Gruppiert Objekte, die für die angegebenen Eigenschaften denselben Wert enthalten.
SYNTAX
Group-Object [-AsHashTable] [-AsString] [[-Property] <Object[]>] [-CaseSensitive] [-Culture <string>] [-InputObject <psobject>] [-NoElement] [<CommonParameters>]
BESCHREIBUNG
Mit dem Cmdlet "Group-Object" werden Objekte in Gruppen auf Grundlage des Werts einer angegebenen Eigenschaft angezeigt. Group-Object gibt eine Tabelle mit einer Zeile für jeden Eigenschaftenwert und einer Spalte zurück, in der die Anzahl der Elemente mit dem jeweiligen Wert angezeigt wird. Wenn Sie mehrere Eigenschaften angeben, werden diese von Group-Object zunächst nach den Werten der ersten Eigenschaft und dann nach dem Wert der nächsten Eigenschaft innerhalb jeder Eigenschaftengruppe gruppiert.
PARAMETER
-AsHashTable [<SwitchParameter>] Gibt die Gruppe als Hashtabelle zurück. Die Schlüssel der Hashtabelle sind die Eigenschaftenwerte, nach denen die Objekte gruppiert werden. Die Werte der Hashtabelle sind die Objekte, die über den jeweiligen Eigenschaftenwert verfügen. Mit dem AsHashTable-Parameter wird jede Hashtabelle zurückgegeben, in der jeder Schlüssel eine Instanz des gruppierten Objekts ist. Wenn der Parameter mit dem AsString-Parameter verwendet wird, sind die Schlüssel in der Hashtabelle Zeichenfolgen. Erforderlich? false Position? named Standardwert GroupInfo-Objekt Pipelineeingaben akzeptieren?false Platzhalterzeichen akzeptieren?false -AsString [<SwitchParameter>] Konvertiert die Hashtabellenschlüssel in Zeichenfolgen. Standardmäßig sind die Hashtabellenschlüssel Instanzen des gruppierten Objekts. Dieser Parameter ist nur gültig, wenn er mit dem AsHashTable-Parameter verwendet wird. Erforderlich? false Position? named Standardwert GroupInfo-Objekte Pipelineeingaben akzeptieren?false Platzhalterzeichen akzeptieren?false -CaseSensitive [<SwitchParameter>] Legt fest, dass für die Gruppierung die Groß-/Kleinschreibung berücksichtigt wird. Ohne diesen Parameter muss für die Eigenschaftenwerte von Objekten in einer Gruppe die Groß-Kleinschreibung nicht berücksichtigt werden. Erforderlich? false Position? named Standardwert Pipelineeingaben akzeptieren?false Platzhalterzeichen akzeptieren?false -Culture <string> Gibt die Kultur an, die für Zeichenfolgenvergleiche verwendet werden soll. Erforderlich? false Position? named Standardwert Pipelineeingaben akzeptieren?false Platzhalterzeichen akzeptieren?false -InputObject <psobject> Gibt die zu gruppierenden Objekte an. Geben Sie eine Variable ein, die die Objekte enthält, oder geben Sie einen Befehl oder einen Ausdruck ein, mit dem die Objekte abgerufen werden. Wenn Sie eine Auflistung von Objekten mithilfe des InputObject-Parameters an Group-Object senden, empfängt Group-Object ein Objekt, das die Auflistung darstellt. Daher erstellt Group-Object eine einzelne Gruppe mit diesem Objekt als Mitglied. Um die Objekte in einer Auflistung zu gruppieren, übergeben Sie die Objekte über die Pipeline an Group-Object. Erforderlich? false Position? named Standardwert Pipelineeingaben akzeptieren?true (ByValue) Platzhalterzeichen akzeptieren?false -NoElement [<SwitchParameter>] Lässt die Mitglieder einer Gruppe aus den Ergebnissen weg. Erforderlich? false Position? named Standardwert Pipelineeingaben akzeptieren?false Platzhalterzeichen akzeptieren?false -Property <Object[]> Gibt die Eigenschaften für die Gruppierung an. Die Objekte werden auf Grundlage des Werts der angegebenen Eigenschaft in Gruppen angeordnet. Bei dem Wert des Property-Parameters kann es sich um eine neu berechnete Eigenschaft handeln. Zum Erstellen einer berechneten Eigenschaft erstellen Sie eine Hashtabelle mit dem Schlüssel "Expression", der einen Zeichenfolgen- oder Skriptblockwert angibt. Erforderlich? false Position? 1 Standardwert Pipelineeingaben akzeptieren?false Platzhalterzeichen akzeptieren?false <CommonParameters> Dieses Cmdlet unterstützt folgende allgemeine Parameter: "Verbose", "Debug", "ErrorAction", "ErrorVariable", "WarningAction", "WarningVariable", "OutBuffer" und "OutVariable". Weitere Informationen erhalten Sie mit dem Befehl "get-help about_commonparameters".
EINGABEN
System.Management.Automation.PSObject Sie können jedes Objekt über die Pipeline an Group-Object übergeben.
AUSGABEN
Microsoft.PowerShell.Commands.GroupInfo oder System.Collections.Hashtable Wenn Sie den AsHashTable-Parameter verwenden, gibt Group-Object eine Hashtabelle zurück. Andernfalls wird ein GroupInfo-Objekt zurückgegeben.
HINWEISE
Sie können Objekte auch mithilfe des GroupBy-Parameters der Formatierungs-Cmdlets (z. B. Format-Table [m2] und Format-List [m2]) gruppieren. Im Gegensatz zu Group-Object, das eine einzelne Tabelle mit einer Zeile für jeden Eigenschaftenwert erstellt, erstellen die GroupBy-Parameter eine Tabelle für jeden Eigenschaftenwert, mit einer Zeile für jedes Element, das über den Eigenschaftenwert verfügt. Für Group-Object müssen die gruppierten Objekte nicht denselben Microsoft .NET Framework-Typ aufweisen. Wenn Objekte unterschiedlicher .NET Framework-Typen gruppiert werden, verwendet Group-Object die folgenden Regeln: - Gleiche Eigenschaftennamen und Typen: Wenn die Objekte über eine Eigenschaft mit dem angegebenen Namen verfügen und die Eigenschaftenwerte den gleichen .NET Framework-Typ aufweisen, werden die Eigenschaftenwerte nach den gleichen Regeln wie Objekte des gleichen Typs gruppiert. - Gleiche Eigenschaftennamen, unterschiedliche Typen: Wenn die Objekte über eine Eigenschaft mit dem angegebenen Namen verfügen, die Eigenschaftenwerte jedoch in verschiedenen Objekten unterschiedliche .NET Framework-Typen aufweisen, verwendet Group-Object den .NET Framework-Typ des ersten Vorkommens der Eigenschaft als .NET Framework-Typ für diese Eigenschaftengruppe. Wenn ein Objekt über eine Eigenschaft mit einem anderen Typ verfügt, wird der Eigenschaftenwert in den Typ für diese Gruppe konvertiert. Wenn die Typkonvertierung fehlschlägt, wird das Objekt nicht in die Gruppe eingeschlossen. - Fehlende Eigenschaften: Objekte ohne eine angegebene Eigenschaft werden als nicht gruppierbar betrachtet. Nicht gruppierbare Objekte werden schließlich in der Ausgabe von GroupInfo-Objekten in der Gruppe "AutomationNull.Value" angegeben.

Beispiele

BEISPIEL 1
C:\PS>get-childitem *.doc | group-object -property length Beschreibung ----------- Mit diesem Befehl werden die Dateien mit der Erweiterung ".doc" am aktuellen Speicherort abgerufen und nach Größe gruppiert.
BEISPIEL 2
C:\PS>get-childitem | sort-object -property extension | group-object -property extension Beschreibung ----------- Mit diesem Befehl werden die Dateien am aktuellen Speicherort abgerufen, nach Dateinamenerweiterung sortiert und dann nach Dateinamenerweiterung gruppiert. Beachten Sie, dass die Dateien vor dem Gruppieren sortiert werden.
BEISPIEL 3
C:\PS>1..35 | group-object -property {$_ % 2},{$_ % 3} Beschreibung ----------- In diesem Beispiel wird gezeigt, wie Skriptblöcke als Wert des Property-Parameters verwendet werden. Mit diesem Befehl werden die ganzen Zahlen von 1 bis 35 nach dem Rest bei Division durch 2 oder 3 gruppiert angezeigt.
BEISPIEL 4
C:\PS>$events = get-eventlog -logname system -newest 1000 C:\PS> $events | group-object -property eventID Count Name Group ----- ---- ----- 44 Information {System.Diagnostics.EventLogEntry, 5 Error {System.Diagnostics.EventLogEntry, 1 Warning {System.Diagnostics.EventLogEntry} Beschreibung ----------- Mit diesen Befehlen werden die letzten 1000 Einträge aus dem Systemereignisprotokoll nach Ereignis-ID gruppiert angezeigt. Im ersten Befehl werden die Ereignisse mit dem Cmdlet "Get-EventLog" abgerufen und mit dem Zuweisungsoperator (=) in der Variablen "$events" gespeichert. Im zweiten Befehl werden die Ereignisse in der Variablen "$events" mit einem Pipelineoperator (|) an das Cmdlet "Group-Object" gesendet. Mit dem Property-Parameter wird angegeben, dass die Ereignisse nach dem Wert ihrer EventID-Eigenschaft gruppiert werden sollen. In der Ausgabe stellt die Spalte "Count" die Anzahl der Einträge in den einzelnen Gruppen, die Spalte "Name" die EventID-Werte, die jeweils eine Gruppe definieren, und die Spalte "Group" die Objekte in den einzelnen Gruppen dar.
BEISPIEL 5
C:\PS>get-process | group-object -property priorityclass Count Name Group ----- ---- ----- 55 Normal {System.Diagnostics.Process (AdtAgent), System.Diagnostics.Process (alg), System.Dia... 1 {System.Diagnostics.Process (Idle)} 3 High {System.Diagnostics.Process (Newproc), System.Diagnostics.Process (winlogon), System.D... 2 BelowNormal {System.Diagnostics.Process (winperf), C:\PS>get-process | group-object -property company -noelement Count Name ----- ---- 55 Normal 1 3 High 2 BelowNormal Beschreibung ----------- In diesem Beispiel werden die Auswirkungen des NoElement-Parameters veranschaulicht. Mit diesen Befehlen werden die Prozesse auf dem Computer nach Prioritätsklasse gruppiert. Im ersten Befehl werden mit dem Cmdlet "Get-Process" die Prozesse auf dem Computer abgerufen. Die Ergebnisse werden mithilfe eines Pipelineoperators (|) an Group-Object gesendet, das die Objekte nach dem Wert der PriorityClass-Eigenschaft des Prozesses gruppiert. Der zweite Befehl stimmt mit dem ersten Befehl überein, mit dem Unterschied, dass er die Mitglieder der Gruppe mithilfe des NoElement-Parameters aus der Ausgabe entfernt. Das Ergebnis ist eine Tabelle, die nur die Anzahl und den Namen des Eigenschaftenwerts enthält. Die Ergebnisse werden in der folgenden Beispielausgabe gezeigt.
BEISPIEL 6
C:\PS>get-eventlog -logname system -newest 1000 | group-object -property {$_.TimeWritten - $_.TimeGenerated} Beschreibung ----------- Der Befehl veranschaulicht, wie der Wert des Property-Parameters als Skriptblock angegeben wird. Mit diesem Befehl werden die letzten 1000 Einträge aus dem Systemereignisprotokoll angezeigt, gruppiert nach der Zeitspanne zwischen dem Generieren und dem Schreiben der Einträge in das Protokoll. In diesem Befehl werden mit dem Cmdlet "Get-EventLog" die Ereignisprotokolleinträge abgerufen. Die Einträge werden mit einem Pipelineoperator (|) an das Cmdlet "Group-Object" gesendet. Der Wert des Property-Parameters wird als Skriptblock (ein Ausdruck in geschweiften Klammern) angegeben. Das Ergebnis der Auswertung des Skriptblocks ist die Zeitspanne zwischen dem Generieren des Protokolleintrags und dem Schreiben des Eintrags in das Protokoll. Nach diesem Wert werden die letzten 1000 Ereignisse gruppiert.
BEISPIEL 7
C:\PS>get-childitem | group-object extension -noelement Count Name ----- ---- 21 82 .txt 9 .cmd 5 .log 12 .xml 5 .htm 36 .ps1 1 .psc1 3 .exe 6 .csv 1 .psd1 2 .bat Beschreibung ----------- Mit diesem Befehl werden die Elemente im aktuellen Verzeichnis nach Dateinamenerweiterung gruppiert. Mithilfe des NoElement-Parameters werden die Mitglieder der Gruppe weggelassen. Die Ergebnisse werden in der folgenden Beispielausgabe gezeigt.
BEISPIEL 8
C:\PS>"a", "b", "c", "c", "d" | get-unique a b c d C:\PS> "a", "b", "c", "c", "d" | group-object -noelement | where {$_.Count -gt 1} Count Name ----- ---- 2 c C:\PS> get-process | group-object -property Name -noelement | where {$_.count -gt 1} Count Name ----- ---- 2 csrss 5 svchost 2 winlogon 2 wmiprvse Beschreibung ----------- In diesem Beispiel wird gezeigt, wie die eindeutigen und nicht eindeutigen (mehrfach vorhandenen) Eigenschaftenwerte in einer Auflistung gesucht werden. Im ersten Befehl werden die eindeutigen Elemente eines Arrays abgerufen, indem das Array über die Pipeline an das Cmdlet "Get-Unique" übergeben wird. Im zweiten Befehl werden die nicht eindeutigen Elemente eines Arrays abgerufen. Das Array wird über die Pipeline an das Cmdlet "Group-Object" übergeben, das die Objekte nach Wert gruppiert. Die resultierenden Gruppen werden über die Pipeline an das Cmdlet "Where-Object" übergeben, das Objekte mit Gruppen auswählt, die mehrere Mitglieder enthalten. Im dritten Befehl wird eine praktische Verwendung dieses Verfahrens veranschaulicht. Mit demselben Verfahren werden Prozesse auf dem Computer gesucht, die den gleichen Prozessnamen aufweisen. Die Ergebnisse werden in der folgenden Beispielausgabe gezeigt.
BEISPIEL 9
C:\PS>$a = get-command get-*, set-* -type cmdlet | group-object -property verb -ashashtable -asstring C:\PS> $a Name Value ---- ----- Get {Get-PSCallStack, Get-PSBreakpoint, Get-PSDrive, Get-PSSession...} Set {Set-Service, Set-StrictMode, Set-PSDebug, Set-PSSessionConfiguration...} C:\PS> $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... ... Beschreibung ----------- In diesem Beispiel werden die Gruppen in einer Hashtabelle mithilfe des AsHashTable-Parameters und des AsString-Parameters als Auflistung von Schlüssel-Wert-Paaren zurückgegeben. In der resultierenden Hashtabelle ist jeder Eigenschaftenwert ein Schlüssel, und die Gruppenelemente sind die Werte. Da jeder Schlüssel eine Eigenschaft des Hashtabellenobjekts ist, können Sie die Werte mithilfe der punktierten Notation anzeigen. Im ersten Befehl werden die Get-Cmdlets und Set-Cmdlets in der Sitzung abgerufen und nach Verb gruppiert, die Gruppen werden als Hashtabelle zurückgegeben, und die Hashtabelle wird in der Variablen "$a" gespeichert. Im zweiten Befehl wird die Hashtabelle in $a angezeigt. Es gibt zwei Schlüssel-Wert-Paare - eines für die Get-Cmdlets und eines für die Set-Cmdlets. Im dritten Befehl werden die Werte des Get-Schlüssels in $a mithilfe der punktierten Notation angezeigt. Die Werte sind CmdletInfo-Objekte. Der AsString-Parameter konvertiert die Objekte in den Gruppen nicht in Zeichenfolgen. VERWANDTE LINKS Online version: http://go.microsoft.com/fwlink/?LinkID=113338 (möglicherweise auf Englisch) C:\Windows>powershell get-help Sort-Object -full

Microsoft Windows [Version 10.0.19045.3693]
Copyright (c) 2023 Microsoft Corporation.

ColorConsole [Version 3.7.1000] PowerShell 2.0-Export

Windows 11, 10, 8.1, 8, 7 / Server 2022, 2019, 2016











Windows-10


... Windows 10 FAQ
... Windows 10 How To


Windows 10 How To


... Windows 11 How To
... Windows 10 FAQ



PowerShell: Gruppiert Objekte, die für die angegebenen Eigenschaften denselben Wert enthalten.

HTTP: ... PS_Windows/de/Group-Object.htm
0.077
17297
Schnelles andocken und vergleichen der Fenster unter Windows!
Am Samsung Galaxy das Mobile-Internet deaktivieren (abstellen, ausschalten)?
Are the full versions of Software freeware on SoftwareOK?
Falsche Erkennung von CPU Hersteller sowie Baureihe i5, i9, warum?
Warum ist meine Intel HD Grafikkarte langsamer als die anderen?
Kann ich am Windows Server Strg+Alt+Entf Anmeldung deaktivieren?
Wo ist mein Arbeitsplatz (Computer) auf Windows 8 / 10, um Dateien und Ordner zu verwalten (öffnen, finden, starten)?
Was wird es noch an Freeware geben was ist in Planung!
Automatisch nach aktueller Treibersoftware suchen über den Win-8, bzw 8.1 Gerätemanager!
Zwei getrennte Ordner vergleichen und System-Schriftarten-Ordner?



(0)