Get-Unique

Gibt eindeutige Elemente aus einer sortierten Liste zurück.

Syntax

AsString (Standard)

Get-Unique
    [-InputObject <PSObject>]
    [-AsString]
    [-CaseInsensitive]
    [<CommonParameters>]

UniqueByType

Get-Unique
    [-InputObject <PSObject>]
    [-OnType]
    [-CaseInsensitive]
    [<CommonParameters>]

Beschreibung

Das Get-Unique Cmdlet 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 Get-Unique wird die Groß-/Kleinschreibung beachtet. 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

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 Get-Unique Cmdlet, um doppelte Wörter zu beseitigen. Die Ergebnisse werden in der $A Variablen gespeichert.

Der zweite Befehl verwendet die Count-Eigenschaft der Auflistung von Zeichenfolgen, $A um zu bestimmen, in wie viele Elemente sich befinden $A.

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 Sort-Object zu sortierende Cmdlet, 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 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 wurden.

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 Sort-Objectan , das standardmäßig die Prozesse alphabetisch nach ProcessName sortiert. Die Ergebnisse werden an das Select-Object Cmdlet weitergeleitet, das nur die Werte der ProcessName-Eigenschaft jedes Objekts auswählt. Die Ergebnisse werden dann weitergeleitet, um Duplikate zu Get-Unique beseitigen.

Der AsString-Parameter weist Get-Unique an, die ProcessName-Werte als Zeichenfolgen zu behandeln. Ohne diesen Parameter Get-Unique werden die ProcessName-Werte als Objekte behandelt und nur eine Instanz des Objekts zurückgegeben, d. h. der erste Prozessname in der Liste.

Beispiel 5: Verwenden von Vergleichen zwischen Groß- und Kleinschreibung zum Abrufen eindeutiger Zeichenfolgen

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 zwischen Groß- und Kleinschreibung zum Abrufen eindeutiger Zeichenfolgen

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 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 Get-Unique wird die Groß-/Kleinschreibung beachtet. 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. 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 listet keine einzelnen Elemente in der Auflistung auf. Da es sich bei der Auflistung um ein einzelnes Element handelt, wird die mit InputObject übermittelte Eingabe 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-Objectzum Sortieren einer Liste . Sie können auch den Parameter Sort-ObjectUnique verwenden, um die eindeutigen Elemente in einer Liste zu finden.