Get-Unique
Gibt eindeutige Elemente aus einer sortierten Liste zurück.
Syntax
AsString (Standardwert)
Get-Unique
[-InputObject <PSObject>]
[-AsString]
[-CaseInsensitive]
[<CommonParameters>]
UniqueByType
Get-Unique
[-InputObject <PSObject>]
[-OnType]
[-CaseInsensitive]
[<CommonParameters>]
Beschreibung
Das Cmdlet Get-Unique vergleicht jedes Element in einer sortierten Liste mit dem nächsten Element, entfernt Duplikate und gibt nur eine Instanz jedes Elements zurück. Die Liste muss sortiert werden, damit das Cmdlet ordnungsgemäß funktioniert.
Standardmäßig wird bei Get-Unique auf Groß- und Kleinschreibung geachtet. Daher gelten Zeichenfolgen, die sich nur im Hinblick auf die Groß-/Kleinschreibung unterscheiden, als eindeutig.
Beispiele
Beispiel 1: Abrufen der eindeutigen Wörter in einer Textdatei
Diese Befehle finden die Anzahl eindeutiger Wörter in einer Textdatei.
$A = $( foreach ($line in Get-Content C:\Test1\File1.txt) {
$line.ToLower().Split(" ")
}) | Sort-Object | Get-Unique
$A.Count
Der erste Befehl ruft den Inhalt der File.txt Datei ab. Es konvertiert jede Textzeile in Kleinbuchstaben und fügt dann an jedem Leerzeichen (" ") einen Zeilenumbruch ein, sodass jedes Wort in einer eigenen Zeile steht. Anschließend sortiert sie die resultierende Liste alphabetisch (Standard) und verwendet das Cmdlet Get-Unique, um doppelte Wörter zu beseitigen. Die Ergebnisse werden in der variablen $A gespeichert.
Der zweite Befehl verwendet die Count-Eigenschaft der Auflistung von Zeichenfolgen in $A, um zu bestimmen, wie viele Elemente sich in $A befinden.
Beispiel 2: Abrufen eindeutiger ganzer Zahlen in einem Array
Dieser Befehl sucht die eindeutigen Elemente der Menge von ganzen Zahlen.
1,1,1,1,12,23,4,5,4643,5,3,3,3,3,3,3,3 | Sort-Object | Get-Unique
1
3
4
5
12
23
4643
Der erste Befehl verwendet ein Array von ganzen Zahlen, die in der Befehlszeile eingegeben wurden, reicht diese zum Sortieren an das Sort-Object-Cmdlet und dann zum Entfernen doppelter Einträge an Get-Unique weiter.
Beispiel 3: Abrufen eindeutiger Objekttypen in einem Verzeichnis
Dieser Befehl verwendet das Cmdlet Get-ChildItem, um den Inhalt des lokalen Verzeichnisses abzurufen, das Dateien und Verzeichnisse enthält.
Get-ChildItem | Sort-Object {$_.GetType()} | Get-Unique -OnType
Der Pipelineoperator (|) sendet die Ergebnisse an das Cmdlet Sort-Object. Die $_.GetType()-Anweisung wendet die GetType-Methode auf jede Datei oder jedes Verzeichnis an. Anschließend Sort-Object die Elemente nach Typ sortiert. Ein anderer Pipelineoperator sendet die Ergebnisse an Get-Unique. Der OnType Parameter leitet Get-Unique an, nur ein Objekt jedes Typs zurückzugeben.
Beispiel 4: Einzigartige Prozesse abrufen
Dieser Befehl ruft die Namen von Prozessen ab, die auf dem Computer ausgeführt werden, wobei Duplikate entfernt werden.
Get-Process | Sort-Object | Select-Object ProcessName | Get-Unique -AsString
Der Get-Process-Befehl ruft alle Prozesse auf dem Computer ab. Der Pipelineoperator (|) übergibt das Ergebnis an Sort-Object, wodurch die Prozesse standardmäßig alphabetisch nach ProcessName-sortiert werden. Die Ergebnisse werden an das Select-Object-Cmdlet weitergereicht, das nur die Werte der ProcessName-Eigenschaft der einzelnen Objekte auswählt. Die Ergebnisse werden dann an Get-Unique weitergeleitet, um Duplikate zu beseitigen.
Der AsString--Parameter weist Get-Unique an, die ProcessName- Werte als Zeichenfolgen zu behandeln.
Ohne diesen Parameter behandelt Get-Unique die ProcessName- Werte als Objekte und gibt nur eine Instanz des Objekts zurück, d. h. den ersten Prozessnamen in der Liste.
Beispiel 5: Verwenden von Vergleichen, die zwischen Groß- und Kleinschreibung unterscheiden, um eindeutige Zeichenfolgen zu erhalten
In diesem Beispiel werden Vergleiche verwendet, bei denen die Groß-/Kleinschreibung keine Rolle spielt, um eindeutige Zeichenketten aus einer Reihe von Zeichenketten zu erhalten.
"aa", "Aa", "Bb", "bb", "aa" | Sort-Object -CaseSensitive | Get-Unique
aa
Aa
bb
Bb
Beispiel 6: Verwenden von Vergleichen, die nicht zwischen Groß- und Kleinschreibung unterscheiden, um eindeutige Zeichenfolgen zu erhalten
In diesem Beispiel werden Vergleiche verwendet, bei denen die Groß-/Kleinschreibung keine Rolle spielt, um eindeutige Zeichenketten aus einer Reihe von Zeichenketten zu erhalten.
"aa", "Aa", "Bb", "bb", "aa" | Sort-Object | Get-Unique -CaseInsensitive
aa
Bb
Parameter
-AsString
Gibt an, dass dieses Cmdlet die Daten als Zeichenfolge verwendet. Ohne diesen Parameter werden Daten als Objekt behandelt. Wenn Sie also eine Auflistung von Objekten desselben Typs an Get-Uniqueübermitteln, z. B. eine Sammlung von Dateien, wird nur eine (die erste) zurückgegeben. Sie können diesen Parameter verwenden, um die eindeutigen Werte von Objekteigenschaften zu finden, z. B. die Dateinamen.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
AsString
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-CaseInsensitive
Standardmäßig wird bei Get-Unique auf Groß- und Kleinschreibung geachtet. Wenn Sie diesen Parameter verwenden, führt das Cmdlet Vergleiche durch, die , die nicht zwischen Groß- und Kleinschreibung unterscheiden.
Dieser Parameter wurde in PowerShell 7.4 hinzugefügt.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-InputObject
Gibt Eingaben für Get-Unique an. Geben Sie eine Variable ein, die die Objekte enthält, oder geben Sie einen Befehl oder einen Ausdruck ein, durch den die Objekte abgerufen werden.
Dieses Cmdlet behandelt die mit InputObject übermittelte Eingabe als Sammlung. Sie zählt keine einzelnen Elemente in der Sammlung auf. Da es sich bei der Auflistung um ein einzelnes Element handelt, werden eingaben, die mit InputObject- übermittelt werden, immer unverändert zurückgegeben.
Parametereigenschaften
| Typ: | PSObject |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | True |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-OnType
Gibt an, dass dieses Cmdlet nur ein Objekt jedes Typs zurückgibt.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
UniqueByType
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
CommonParameters
Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.
Eingaben
PSObject
Sie können einen beliebigen Objekttyp an dieses Cmdlet weiterleiten.
Ausgaben
PSObject
Dieses Cmdlet gibt seine Eingabeobjekte ohne Duplikate zurück.
Hinweise
PowerShell enthält die folgenden Aliase für Get-Unique:
- Alle Plattformen:
gu
Weitere Informationen finden Sie unter about_Aliases.
Verwenden Sie Sort-Object, um eine Liste zu sortieren. Sie können auch den Parameter Unique von Sort-Object verwenden, um die eindeutigen Elemente in einer Liste zu finden.