Get-Unique
Gibt eindeutige Elemente aus einer sortierten Liste zurück.
Syntax
Get-Unique
[-InputObject <PSObject>]
[-AsString]
[<CommonParameters>]
Get-Unique
[-InputObject <PSObject>]
[-OnType]
[<CommonParameters>]
Beschreibung
Das Get-Unique
Cmdlet vergleicht jedes Element in einer sortierten Liste mit dem nächsten Element, beseitigt Duplikate und gibt nur eine instance jedes Elements zurück. Die Liste muss sortiert sein, damit das Cmdlet ordnungsgemäß funktioniert.
Bei Get-Unique
muss die Groß- und Kleinschreibung beachtet werden. Daher gelten Zeichenfolgen, die sich nur im Hinblick auf die Groß-/Kleinschreibung unterscheiden, als eindeutig.
Beispiele
Beispiel 1: Abrufen eindeutiger Wörter in einer Textdatei
Mit diesen Befehlen wird die Anzahl der eindeutigen Wörter in einer Textdatei ermittelt.
$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 teilt dann jedes Wort in eine separate Zeile am Leerzeichen (" "
). Anschließend sortiert es die resultierende Liste alphabetisch (standard) und verwendet das Get-Unique
Cmdlet, um alle doppelten Wörter zu beseitigen. Die Ergebnisse werden in der $A
Variablen gespeichert.
Der zweite Befehl verwendet die Count-Eigenschaft der Auflistung von Zeichenfolgen in $A
, um zu bestimmen, wie viele Elemente in $A
sind.
Beispiel 2: Abrufen eindeutiger Ganzzahlen 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 ganzzahliger Werte, die an der Befehlszeile eingegeben werden, leitet sie an das Sort-Object
Cmdlet weiter, um sortiert zu werden, und leitet sie dann an weiter, Get-Unique
wodurch doppelte Einträge vermieden werden.
Beispiel 3: Abrufen eindeutiger Objekttypen in einem Verzeichnis
Dieser Befehl verwendet das Get-ChildItem
Cmdlet, 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 Sort-Object
Cmdlet. Die $_.GetType()
-Anweisung wendet die GetType-Methode auf jede Datei oder jedes Verzeichnis an. Sortiert dann Sort-Object
die Elemente nach Typ. Ein anderer Pipelineoperator sendet die Ergebnisse an Get-Unique
. Der OnType-Parameter weist darauf hin, nur ein Objekt jedes Typs Get-Unique
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 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 weitergeleitet, das nur die Werte der ProcessName-Eigenschaft jedes Objekts auswählt. Die Ergebnisse werden dann an weitergeleitet, um Get-Unique
Duplikate zu beseitigen.
Der AsString-Parameter weist an Get-Unique
, die ProcessName-Werte als Zeichenfolgen zu behandeln.
Ohne diesen Parameter Get-Unique
behandelt die ProcessName-Werte als Objekte und gibt nur einen instance des Objekts zurück, d. h. den ersten Prozessnamen in der Liste.
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 Auflistung von Dateien, gibt sie nur eine (die erste) zurück. Mit diesem Parameter können Sie nach den eindeutigen Werten von Objekteigenschaften suchen, z. B. Dateinamen.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Gibt die Eingabe 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 eingabe, die mit InputObject als Sammlung übermittelt wird. Einzelne Elemente in der Auflistung werden nicht aufgelistet. Da es sich bei der Auflistung um ein einzelnes Element handelt, wird die mit InputObject übermittelte Eingabe immer unverändert zurückgegeben.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-OnType
Gibt an, dass dieses Cmdlet nur ein Objekt jedes Typs zurückgibt.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Eingaben
Sie können einen beliebigen Objekttyp an übergeben Get-Unique
.
Ausgaben
Der Typ des zurückgegebenen Objekts Get-Unique
wird durch die Eingabe bestimmt.
Hinweise
Sie können auch auf den Get-Unique
integrierten Alias verweisen. gu
Weitere Informationen finden Sie unter about_Aliases.
Um eine Liste zu sortieren, verwenden Sie Sort-Object
. Sie können auch den Unique-Parameter von Sort-Object
verwenden, um die eindeutigen Elemente in einer Liste zu suchen.