PowerShell – это мощный инструмент для управления данными, но обычно предоставляет слишком много информации сразу. Как вы знаете, избыток информации может быть подавляющим и сложным для анализа. Но не переживайте. Команда Select-Object
в PowerShell пригодится.
В этом уроке вы узнаете основы использования команды Select-Object
, чтобы уменьшить объем или фильтровать результаты различными способами.
Продолжайте читать и начните безболезненное управление данными!
Предварительные требования
В этом учебнике представлены практические демонстрации. Чтобы их повторить, убедитесь, что у вас установлен PowerShell. В уроке используется Windows 10 с PowerShell 7, но также должна подойти любая современная версия.
Что такое команда Select-Object в PowerShell?
Команда Select-Object
упрощает управление данными, позволяя выбирать конкретные свойства из объекта или набора данных. В то же время вы можете переименовывать свойства или создавать вычисляемые свойства на основе существующих.
Основный синтаксис Select-Object
выглядит следующим образом, где:
Parameter | Function |
---|---|
-InputObject |
Specifies the object or data set you want to work with, which can be an object, an array of objects, or an output of another cmdlet. |
Property |
Specifies the property or properties to select from the InputObject parameter. You can specify multiple properties separated by commas. |
Optional Parameters |
Allows you to refine your selection, such as selecting a certain number of objects or skipping objects. |
Выбор объектов по свойствам
Поскольку для удовлетворения вашего желания узнать о командлете Select-Object
требуется более подробное введение, почему бы не начать с одного из его распространенных примеров использования? Начните этот учебник с выбора конкретного свойства объекта с помощью командлета Select-Object
.
Предположим, у вас есть список процессов, запущенных на вашем компьютере, но вы хотите видеть только их имена. Указание свойства Name
для командлета Select-Object
решит эту задачу.
Откройте PowerShell и выполните следующую команду Get-Process
, чтобы получить и напечатать список всех процессов только (Select-Object
) по Name
.

Помимо запущенных процессов, командлет
Select-Object
позволяет работать с файлом CSV. Предположим, у вас есть файл CSV с множеством столбцов, но вам нужны только некоторые из них. В этом случае дайте командлетуSelect-Object
выбрать только соответствующие столбцы, чтобы вы могли манипулировать и анализировать данные.
Теперь выполните следующую команду, чтобы выбрать несколько свойств (Select-Object
): Name
и CPU
(разделенные запятыми). Эта функция полезна при работе с большими наборами данных, когда вам нужны только некоторые свойства каждого объекта.
Кроме того, эта команда также сортирует список объектов (Sort-Object
) в порядке -Descending
с использованием свойства CPU
в качестве ссылки.
Ниже вы можете увидеть перечисленные процессы, начиная с наиболее ресурсоемкого, Google Chrome (если он у вас установлен).

Создание вычисляемого свойства
При поиске свойств, которые лучше подходят для ваших нужд, рассмотрите возможность создания вычисляемого свойства. Почему? Вычисляемые свойства позволяют вам обрабатывать и преобразовывать данные, комбинировать существующие свойства, выполнять математические операции или форматировать данные в определенном виде.
Чтобы создать вычисляемое свойство, вы должны указать новое имя свойства и выражение, которое определяет, как рассчитывать значение свойства:
Запустите следующую команду, чтобы выполнить следующее:
- Получите список запущенных процессов (
Get-Process
), выбрав только (Select-Object
) свойстваName
иCPU
. - Создайте новое вычисляемое свойство с именем \(\text{Name}\) \(\text{Memory (MB)}\), которое вычисляет использование памяти каждым процессом в мегабайтах. Использование памяти рассчитывается с использованием \(\text{Expression}\), которая делит свойство \(\text{WorkingSet}\) на \(\text{1MB}\). Любое допустимое выражение PowerShell работает при создании вычисляемого свойства.
- Выведите все полученные работающие процессы в порядке убывания по вычисленному свойству \(\text{Memory (MB)}\).

Исключение указанного свойства
В реальной жизни результаты команды \(\text{Select-Object}\) могут содержать чувствительную информацию, такую как имена пользователей и пароли. Как избежать этого риска?
Чтобы предотвратить отображение чувствительных данных в выводе, добавьте параметр \(\text{-ExcludeProperty}\) для исключения указанного свойства из вывода.
Запустите следующую команду для выполнения следующих задач:
- Получите список всех файлов и папок ( \(\text{Get-ChildItem}\) ) в каталоге \(\text{C:\\}\) рекурсивно (\(\text{-Recurse}\)).
- Перенаправьте вывод в командлет
Select-Object
, чтобы выбрать свойстваName
,Length
иLastWriteTime
. - Исключите (
-ExcludeProperty
) свойствоFullName
из вывода. Это предотвратит отображение полных путей в выводе, которые могут содержать конфиденциальную информацию.

Пропуск первого или последнего числа объектов
При работе с массивными наборами данных поиск нужной информации может быть похожим на поиск алмаза в угольной шахте. Но зачем тратить время на просмотр несущественных данных?
В PowerShell командлет Select-Object
предоставляет два параметра, которые позволяют исключить первое (-Skip
) и последнее (-SkipLast
) число объектов в выводе, соответственно.
Чтобы увидеть, как работает пропуск нескольких объектов из вывода:
Выполните нижеприведенную команду, чтобы получить все работающие процессы (Get-Process
), но -Skip
первые 100
возвращенных объектов.
Обратите внимание, что количество пропущенных объектов основано на целочисленных значениях (положительных и целых числах без десятичных знаков), которые в данном случае равны
100
.

Теперь выполните следующую команду, чтобы получить список содержимого рабочего каталога (Get-ChildItem
), но пропустите последние (-SkipLast
) 100
возвращенных объектов.

Выбор первого или последнего числа объектов
Кроме того, пропуская первый и последний номер объектов, вас также может заинтересовать выбор первого и последнего номера объектов. Команда Select-Object
поддерживает это с помощью параметров First
и Last
, которые позволяют вам пропустить все остальное для экономии времени и ресурсов.
Запустите следующую команду, чтобы получить все процессы, но выбрать только (Select-Object
) -First 10
объектов, возвращаемых.

Теперь выполните команду ниже, чтобы получить все содержимое рабочего каталога (Get-ChildItem
), но выберите только (Select-Object
) -Last 10
возвращаемых объектов.

Исключительный выбор уникальных объектов
При работе с большими наборами данных вы столкнетесь с дублирующимися значениями, которые возможно захотите исключить из вывода, что типично. Но хорошо то, что с командой Select-Object
вам не нужно вручную исключать дублирующиеся значения.
Добавление параметра -Unique
позволяет выбрать только уникальные объекты из вывода, упрощая ваш анализ и повышая точность результатов.
Запустите команду ниже, чтобы выбрать (Select-Object
) и вернуть -First 2
объекта.
Ниже вы можете увидеть два возвращенных объекта, независимо от того, является ли другой дублирующимся значением.

Наконец, выполните следующую команду, чтобы вернуть только одно уникальное значение -Unique
для каждого из выбранных -First 2
объектов.
На этот раз вы видите только один возвращенный объект из первых двух выбранных, поскольку другой является всего лишь дублирующим значением. Как вы понимаете, эти результаты демонстрируют, что параметр -Unique
удобен для быстрого удаления любых дублирующихся объектов в ваших данных.

Заключение
PowerShell, как правило, выдает избыток информации. Но в этом учебнике вы узнали, как команда PowerShell Select-Object
помогает упростить ваши данные, чтобы видеть только необходимую информацию.
Вы видели, как различные параметры позволяют вам выбирать и исключать данные, особенно дублирующиеся значения из вывода. С командой Select-Object
управление большим объемом данных не обязательно должно быть трудной задачей.
На этом этапе вы можете быстро уточнить свои результаты, чтобы они лучше подходили для анализа и устранения неполадок. Но почему бы не научиться тому, как форматировать ваши вычисленные свойства, чтобы улучшить читаемость и удобство использования?
Source:
https://adamtheautomator.com/powershell-select-object/