Get-Unique
Gibt die eindeutigen Elemente aus einer sortierten Liste zurück.
Syntax
Get-Unique [-AsString] [-InputObject <psobject>] [<CommonParameters>]
Get-Unique [-OnType] [-InputObject <psobject>] [<CommonParameters>]
Beschreibung
Das Cmdlet "Get-Unique" vergleicht jedes Element in einer sortierten Liste mit dem nächsten Element, entfernt Duplikate und gibt nur eine einzige Instanz jedes Elements zurück.
Für die ordnungsgemäße Ausführung des Cmdlets muss die Liste sortiert sein.
Parameter
-AsString
Behandelt die Daten als Zeichenfolge. Ohne diesen Parameter werden Daten als Objekt behandelt. Wenn Sie eine Auflistung von Objekten desselben Typs, z. B. eine Auflistung von Dateien, an Get-Unique senden, wird daher nur ein Objekt (das erste) zurückgegeben. Mit diesem Parameter können Sie eindeutige Werte von Objekteigenschaften, z. B. die Dateinamen, suchen.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-InputObject <psobject>
Akzeptiert Eingaben für Get-Unique. 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.
Get-Unique behandelt die mit InputObject gesendete Eingabe als Auflistung und zählt nicht einzelne Elemente in der Auflistung auf. Weil die Auflistung ein einzelnes Element ist, wird die mit "InputObject" gesendete Eingabe immer unverändert zurückgegeben.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
true (ByValue) |
Platzhalterzeichen akzeptieren? |
false |
-OnType
Gibt nur ein Objekt von jedem Typ zurück.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
<CommonParameters>
Dieses Cmdlet unterstützt die folgenden allgemeinen Parameter: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer und -OutVariable. Weitere Informationen finden Sie unter about_Commonparameters.
Eingaben und Ausgaben
Der Eingabetyp ist der Typ der Objekte, die über die Pipeline an das Cmdlet übergeben werden können. Der Rückgabetyp ist der Typ der Objekte, die das Cmdlet zurückgibt.
Eingaben |
System.Management.Automation.PSObject Sie können beliebige Objekttypen über die Pipeline an Get-Unique übergeben. |
Ausgaben |
System.Management.Automation.PSObject Der von Get-Unique zurückgegebene Objekttyp wird von der Eingabe bestimmt. |
Hinweise
Sie können auch über den integrierten Alias "gu" auf Get-Unique verweisen. 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.
Beispiel 1
C:\PS>$a = $(foreach ($line in get-content C:\Test1\File1.txt) {$line.tolower().split(" ")}) | sort | get-unique
C:\PS> $a.count
Beschreibung
-----------
Mit diesen Befehlen wird die Anzahl der eindeutigen Wörter in einer Textdatei gesucht.
Im ersten Befehl wird der Inhalt der Datei "File.txt" abgerufen. Jede Textzeile wird in Kleinbuchstaben konvertiert, und anschließend wird jedes Wort nach dem Leerzeichen (" ") in einer eigenen Zeile angeordnet. Dann wird die resultierende Liste alphabetisch (Standardeinstellung) sortiert, und mit dem Cmdlet "Get-Unique" werden doppelte Wörter entfernt. Die Ergebnisse werden in der Variablen "$a" gespeichert.
Im zweiten Befehl wird mit der Count-Eigenschaft der Auflistung von Zeichenfolgen in "$a" die Anzahl der Elemente in "$a" bestimmt.
Beispiel 2
C:\PS>1,1,1,1,12,23,4,5,4643,5,3,3,3,3,3,3,3 | sort-object | Get-Unique
Beschreibung
-----------
Mit diesem Befehl werden die eindeutigen Elemente des Satzes von ganzen Zahlen gesucht. Der erste Befehl akzeptiert ein Array von in der Befehlszeile eingegebenen ganzen Zahlen, übergibt sie über die Pipeline an das Cmdlet "Sort-Object", um sie zu sortieren, und übergibt sie anschließend über die Pipeline an Get-Unique, das doppelte Einträge entfernt.
Beispiel 3
C:\PS>get-childitem | sort-object {$_.GetType()} | unique -OnType
Beschreibung
-----------
In diesem Befehl wird mit dem Cmdlet "Get-ChildItem" der Inhalt des lokalen Verzeichnisses abgerufen, das Dateien und Verzeichnisse enthält. Die Ergebnisse werden mit dem Pipelineoperator (|) an das Cmdlet "Sort-Object" gesendet. Mit der Anweisung "$_.GetType()" wird die GetType-Methode auf jede Datei oder jedes Verzeichnis angewendet. Anschließend werden die Elemente mit Sort-Object nach Typ sortiert. Mit einem weiteren Pipelineoperator werden die Ergebnisse an Get-Unique übergeben. Der OnType-Parameter legt fest, dass Get-Unique nur ein Objekt von jedem Typ zurückgibt.
Beispiel 4
C:\PS>get-process | sort-object | select processname | get-unique -asstring
Beschreibung
-----------
Mit diesem Befehl werden die Namen von auf dem Computer ausgeführten Prozessen abgerufen, wobei Duplikate entfernt werden.
Mit dem Befehl "Get-Process" werden alle Prozesse auf dem Computer abgerufen. Der Pipelineoperator (|) übergibt das Ergebnis an Sort-Object, das standardmäßig die Prozesse alphabetisch nach "ProcessName" sortiert. Die Ergebnisse werden über die Pipeline an das Cmdlet "Select-Object" übergeben, das nur die Werte der ProcessName-Eigenschaft der einzelnen Objekte auswählt. Anschließend werden die Ergebnisse über die Pipeline an Get-Unique übergeben, um Duplikate zu entfernen.
Der AsString-Parameter legt fest, dass Get-Unique die ProcessName-Werte als Zeichenfolgen behandelt. Ohne diesen Parameter behandelt Get-Unique die ProcessName-Werte als Objekte und gibt nur eine einzige Instanz des Objekts, d. h. den ersten Prozessnamen in der Liste, zurück.