Get-Unique (Microsoft.PowerShell.Utility)
Get-Unique
- Модуль:
- Microsoft.PowerShell.Utility
Возвращает уникальные элементы из отсортированного списка.
Синтаксис
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
- Позиция:
Именованный
- Значение по умолчанию:
False
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-CaseInsensitive
По умолчанию Get-Unique чувствителен к регистру. При использовании этого параметра командлет использует сравнения без учета регистра.
Этот параметр был добавлен в PowerShell 7.4.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
False
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-InputObject
Указывает входные данные для Get-Unique. Введите переменную, содержащую объекты, или введите команду или выражение, позволяющее получить объекты.
Этот командлет обрабатывает входные данные, отправленные с использованием InputObject, как коллекцию. Он не перечисляет отдельные элементы коллекции. Поскольку коллекция представляет собой один элемент, входные данные, отправленные с помощью InputObject, всегда возвращаются без изменений.
- Тип :
PSОбъект
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
False
-OnType
Указывает, что этот командлет возвращает только один объект каждого типа.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
Входы
PSObject
В этот командлет можно передать объект любого типа.
Выходы
PSObject
Этот командлет возвращает входные объекты без дубликатов.
Примечания
PowerShell включает следующие псевдонимы для Get-Unique:
Все платформы:
gu
Дополнительные сведения см. в разделе about_Aliases.
Чтобы отсортировать список, используйте Sort-Object. Вы также можете использовать параметр Unique Sort-Object, чтобы найти уникальные элементы в списке.