Freigeben über


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.