Get-Unique
Возвращает уникальные элементы из отсортированного списка.
Синтаксис
Get-Unique
[-InputObject <PSObject>]
[-AsString]
[-CaseInsensitive]
[<CommonParameters>]
Get-Unique
[-InputObject <PSObject>]
[-OnType]
[-CaseInsensitive]
[<CommonParameters>]
Описание
Командлет Get-Unique
сравнивает каждый элемент в отсортированного списка со следующим элементом, устраняет дубликаты и возвращает только один экземпляр каждого элемента. Список должен быть отсортирован для правильной работы командлета.
По умолчанию Get-Unique
учитывает регистр. В результате строки, отличающиеся только в регистре символов, считаются уникальными.
Примеры
Пример 1. Получение уникальных слов в текстовом файле
Эти команды находят количество уникальных слов в текстовом файле.
$A = $( foreach ($line in Get-Content C:\Test1\File1.txt) {
$line.ToLower().Split(" ")
}) | Sort-Object | Get-Unique
$A.Count
Первая команда получает содержимое файла File.txt
. Он преобразует каждую строку текста в строчные буквы, а затем разбивает каждое слово на отдельную строку в пространстве (" "
). Затем он сортирует результирующий список по алфавиту (по умолчанию) и использует командлет Get-Unique
для устранения повторяющихся слов. Результаты хранятся в переменной $A
.
Вторая команда использует свойство Count коллекции строк в $A
, чтобы определить, сколько элементов находится в $A
.
Пример 2. Получение уникальных целых чисел в массиве
Эта команда находит уникальные члены набора целых чисел.
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
Первая команда принимает массив целых чисел, типизированных в командной строке, передает их в командлет Sort-Object
для сортировки, а затем передает их в Get-Unique
, что устраняет повторяющиеся записи.
Пример 3. Получение уникальных типов объектов в каталоге
Эта команда использует командлет Get-ChildItem
для извлечения содержимого локального каталога, включающего файлы и каталоги.
Get-ChildItem | Sort-Object {$_.GetType()} | Get-Unique -OnType
Оператор конвейера (|
) отправляет результаты командлету Sort-Object
. Инструкция $_.GetType()
применяет метод getType к каждому файлу или каталогу. Затем Sort-Object
сортирует элементы по типу. Другой оператор конвейера отправляет результаты в Get-Unique
. Параметр OnType направляет Get-Unique
возвращать только один объект каждого типа.
Пример 4. Получение уникальных процессов
Эта команда получает имена процессов, выполняемых на компьютере с повторяющимися копиями.
Get-Process | Sort-Object | Select-Object ProcessName | Get-Unique -AsString
Команда Get-Process
получает все процессы на компьютере. Оператор конвейера (|
) передает результат Sort-Object
, который по умолчанию сортирует процессы в алфавитном порядке по ProcessName. Результаты передаются в командлет Select-Object
, который выбирает только значения свойства ProcessName каждого объекта. Затем результаты передаются в Get-Unique
, чтобы исключить дубликаты.
Параметр AsString сообщает Get-Unique
обрабатывать значения ProcessName в виде строк.
Без этого параметра Get-Unique
обрабатывает значения ProcessName как объекты и возвращает только один экземпляр объекта, то есть имя первого процесса в списке.
Пример 5. Использование сравнения с учетом регистра для получения уникальных строк
В этом примере используются нечувствительные сравнения регистров для получения уникальных строк из массива строк.
"aa", "Aa", "Bb", "bb", "aa" | Sort-Object -CaseSensitive | Get-Unique
aa
Aa
bb
Bb
Пример 6. Сравнение без учета регистра для получения уникальных строк
В этом примере используются нечувствительные сравнения регистров для получения уникальных строк из массива строк.
"aa", "Aa", "Bb", "bb", "aa" | Sort-Object | Get-Unique -CaseInsensitive
aa
Bb
Параметры
-AsString
Указывает, что этот командлет использует данные в качестве строки. Без этого параметра данные обрабатываются как объект, поэтому при отправке коллекции объектов того же типа в Get-Unique
, например коллекции файлов, она возвращает только одну (первую). Этот параметр можно использовать для поиска уникальных значений свойств объекта, таких как имена файлов.
Тип: | SwitchParameter |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-CaseInsensitive
По умолчанию Get-Unique
учитывает регистр. При использовании этого параметра командлет использует нечувствительные сравнения регистра.
Этот параметр добавлен в PowerShell 7.4.
Тип: | SwitchParameter |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-InputObject
Задает входные данные для Get-Unique
. Введите переменную, содержащую объекты или введите команду или выражение, которое получает объекты.
Этот командлет обрабатывает входные данные, отправленные с помощью InputObject как коллекцию. Он не перечисляет отдельные элементы в коллекции. Так как коллекция является одним элементом, входные данные, отправленные с помощью InputObject, всегда возвращаются без изменений.
Тип: | PSObject |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-OnType
Указывает, что этот командлет возвращает только один объект каждого типа.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
Входные данные
Вы можете передать любой тип объекта в этот командлет.
Выходные данные
Этот командлет возвращает входные объекты без дубликата.
Примечания
PowerShell включает следующие псевдонимы для Get-Unique
:
- Все платформы:
gu
Дополнительные сведения см. в about_Aliases.
Для сортировки списка используйте Sort-Object
. Вы также можете использовать параметр UniqueSort-Object
для поиска уникальных элементов в списке.
Связанные ссылки
PowerShell