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
Do tego polecenia cmdlet można przekazać dowolny typ obiektu.
Dane wyjściowe
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.