Поделиться через


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

Входные данные

PSObject

Вы можете передать любой тип объекта в этот командлет.

Выходные данные

PSObject

Этот командлет возвращает входные объекты без дубликата.

Примечания

PowerShell включает следующие псевдонимы для Get-Unique:

  • Все платформы:
    • gu

Дополнительные сведения см. в about_Aliases.

Для сортировки списка используйте Sort-Object. Вы также можете использовать параметр UniqueSort-Object для поиска уникальных элементов в списке.