Udostępnij za pośrednictwem


Get-Unique

Zwraca unikatowe elementy z posortowanej listy.

Składnia

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

Opis

Polecenie cmdlet Get-Unique porównuje każdy element na posortowanej liście do następnego elementu, eliminuje duplikaty i zwraca tylko jedno wystąpienie każdego elementu. Aby polecenie cmdlet działało prawidłowo, należy posortować listę.

Domyślnie Get-Unique uwzględnia wielkość liter. W związku z tym ciągi, które różnią się tylko wielkością znaków, są uważane za unikatowe.

Przykłady

Przykład 1. Pobieranie unikatowych wyrazów w pliku tekstowym

Te polecenia znajdują liczbę unikatowych wyrazów w pliku tekstowym.

$A = $( foreach ($line in Get-Content C:\Test1\File1.txt) {
    $line.tolower().split(" ")
  }) | Sort-Object | Get-Unique
$A.count

Pierwsze polecenie pobiera zawartość pliku File.txt. Konwertuje każdy wiersz tekstu na małe litery, a następnie dzieli każde słowo na oddzielny wiersz w przestrzeni (" "). Następnie sortuje wynikowej listy alfabetycznie (wartość domyślna) i używa polecenia cmdlet Get-Unique w celu wyeliminowania zduplikowanych wyrazów. Wyniki są przechowywane w zmiennej $A.

Drugie polecenie używa właściwości Count kolekcji ciągów w $A w celu określenia liczby elementów w $A.

Przykład 2. Pobieranie unikatowych liczb całkowitych w tablicy

To polecenie znajduje unikatowe elementy członkowskie zestawu liczb całkowitych.

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

Pierwsze polecenie przyjmuje tablicę liczb całkowitych wpisanych w wierszu polecenia, potokuje je do polecenia cmdlet Sort-Object do sortowania, a następnie potokuje je do Get-Unique, co eliminuje zduplikowane wpisy.

Przykład 3. Pobieranie unikatowych typów obiektów w katalogu

To polecenie używa polecenia cmdlet Get-ChildItem do pobrania zawartości katalogu lokalnego, który zawiera pliki i katalogi.

Get-ChildItem | Sort-Object {$_.GetType()} | Get-Unique -OnType

Operator potoku (|) wysyła wyniki do polecenia cmdlet Sort-Object. Instrukcja $_.GetType() stosuje metodę GetType do każdego pliku lub katalogu. Następnie Sort-Object sortuje elementy według typu. Inny operator potoku wysyła wyniki do Get-Unique. Parametr OnType kieruje Get-Unique zwracać tylko jeden obiekt każdego typu.

Przykład 4. Uzyskiwanie unikatowych procesów

To polecenie pobiera nazwy procesów uruchomionych na komputerze z wyeliminowanymi duplikatami.

Get-Process | Sort-Object | Select-Object processname | Get-Unique -AsString

Polecenie Get-Process pobiera wszystkie procesy na komputerze. Operator potoku (|) przekazuje wynik do Sort-Object, który domyślnie sortuje procesy alfabetycznie według ProcessName. Wyniki są przesyłane potokami do polecenia cmdlet Select-Object, które wybiera tylko wartości właściwości ProcessName każdego obiektu. Wyniki są następnie przesyłane potokami do Get-Unique w celu wyeliminowania duplikatów.

Parametr AsString informuje Get-Unique, aby traktować wartości ProcessName jako ciągi. Bez tego parametru Get-Unique traktuje wartości ProcessName jako obiekty i zwraca tylko jedno wystąpienie obiektu, czyli pierwszą nazwę procesu na liście.

Przykład 5. Użyj porównań z uwzględnieniem wielkości liter, aby uzyskać unikatowe ciągi

W tym przykładzie użyto porównań bez uwzględniania wielkości liter, aby uzyskać unikatowe ciągi z tablicy ciągów.

"aa", "Aa", "Bb", "bb", "aa" | Sort-Object -CaseSensitive | Get-Unique

aa
Aa
bb
Bb

Przykład 6. Używanie porównań bez uwzględniania wielkości liter w celu uzyskania unikatowych ciągów

W tym przykładzie użyto porównań bez uwzględniania wielkości liter, aby uzyskać unikatowe ciągi z tablicy ciągów.

"aa", "Aa", "Bb", "bb", "aa" | Sort-Object | Get-Unique -CaseInsensitive

aa
Bb

Parametry

-AsString

Wskazuje, że to polecenie cmdlet używa danych jako ciągu. Bez tego parametru dane są traktowane jako obiekt, więc po przesłaniu kolekcji obiektów tego samego typu do Get-Unique, takich jak kolekcja plików, zwraca tylko jeden (pierwszy). Tego parametru można użyć do znalezienia unikatowych wartości właściwości obiektu, takich jak nazwy plików.

Typ:SwitchParameter
Position:Named
Domyślna wartość:False
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-CaseInsensitive

Domyślnie Get-Unique uwzględnia wielkość liter. W przypadku użycia tego parametru polecenie cmdlet używa porównań bez uwzględniania wielkości liter.

Ten parametr został dodany w programie PowerShell 7.4.

Typ:SwitchParameter
Position:Named
Domyślna wartość:False
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-InputObject

Określa dane wejściowe dla Get-Unique. Wprowadź zmienną zawierającą obiekty lub wpisz polecenie lub wyrażenie, które pobiera obiekty.

To polecenie cmdlet traktuje przesłane dane wejściowe przy użyciu InputObject jako kolekcji. Nie wylicza pojedynczych elementów w kolekcji. Ponieważ kolekcja jest pojedynczym elementem, dane wejściowe przesyłane przy użyciu InputObject są zawsze zwracane bez zmian.

Typ:PSObject
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-OnType

Wskazuje, że to polecenie cmdlet zwraca tylko jeden obiekt każdego typu.

Typ:SwitchParameter
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

Dane wejściowe

PSObject

Do tego polecenia cmdlet można przekazać dowolny typ obiektu.

Dane wyjściowe

PSObject

To polecenie cmdlet zwraca swoje obiekty wejściowe bez duplikatów.

Uwagi

Program PowerShell zawiera następujące aliasy dla Get-Unique:

  • Wszystkie platformy:
    • gu

Aby uzyskać więcej informacji, zobacz about_Aliases.

Aby posortować listę, użyj Sort-Object. Możesz również użyć parametru UniqueSort-Object, aby znaleźć unikatowe elementy na liście.