Get-Unique
Gibt eindeutige Elemente aus einer sortierten Liste zurück.
Syntax
Get-Unique
[-InputObject <PSObject>]
[-AsString]
[-CaseInsensitive]
[<CommonParameters>]
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
die Groß-/Kleinschreibung beachtet. Daher werden Zeichenfolgen, die sich nur in der Groß-/Kleinschreibung unterscheiden, als eindeutig betrachtet.
Beispiele
Beispiel 1: Abrufen eindeutiger 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. Sie wandelt jede Textzeile in Kleinbuchstaben um und teilt dann jedes Wort in eine separate Zeile im Leerzeichen (" "
). 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 eigenschaft Count der Auflistung von Zeichenfolgen in $A
, um zu bestimmen, wie viele Elemente sich in $A
befinden.
Beispiel 2: Abrufen eindeutiger ganzzahliger Zahlen in einem Array
Dieser Befehl findet die eindeutigen Elemente der Gruppe ganzzahliger 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 ganzzahligen Zahlen, die an der Befehlszeile eingegeben werden, leitet sie an das cmdlet Sort-Object
sortiert werden, und leitet sie dann an Get-Unique
, wodurch doppelte Einträge entfernt werden.
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: Abrufen eindeutiger Prozesse
Dieser Befehl ruft die Namen von Prozessen ab, die auf dem Computer ausgeführt werden, wobei Duplikate entfernt wurden.
Get-Process | Sort-Object | Select-Object processname | Get-Unique -AsString
Der Befehl Get-Process
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 Cmdlet Select-Object
weitergeleitet, das nur die Werte der ProcessName- eigenschaft jedes Objekts 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 zwischen Groß- und Kleinschreibung zum Abrufen eindeutiger Zeichenfolgen
In diesem Beispiel werden Vergleiche zwischen Groß- und Kleinschreibung verwendet, um eindeutige Zeichenfolgen aus einem Array von Zeichenfolgen abzurufen.
"aa", "Aa", "Bb", "bb", "aa" | Sort-Object -CaseSensitive | Get-Unique
aa
Aa
bb
Bb
Beispiel 6: Verwenden von Vergleichen zwischen Groß- und Kleinschreibung zum Abrufen eindeutiger Zeichenfolgen
In diesem Beispiel werden Vergleiche zwischen Groß- und Kleinschreibung verwendet, um eindeutige Zeichenfolgen aus einem Array von Zeichenfolgen abzurufen.
"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.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-CaseInsensitive
Standardmäßig wird bei Get-Unique
die Groß-/Kleinschreibung beachtet. Wenn Sie diesen Parameter verwenden, verwendet das Cmdlet Vergleiche zwischen Groß- und Kleinschreibung.
Dieser Parameter wurde in PowerShell 7.4 hinzugefügt.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | 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 Ausdruck ein, der die Objekte abruft.
Dieses Cmdlet behandelt die mit InputObject übermittelte Eingabe als Sammlung. Sie listet keine einzelnen Elemente in der Auflistung auf. Da es sich bei der Auflistung um ein einzelnes Element handelt, werden eingaben, die mit InputObject- übermittelt werden, immer unverändert zurückgegeben.
Typ: | PSObject |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-OnType
Gibt an, dass dieses Cmdlet nur ein Objekt jedes Typs zurückgibt.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
Eingaben
Sie können einen beliebigen Objekttyp an dieses Cmdlet weiterleiten.
Ausgaben
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.