18

Философия PowerShell. Часть 4. Интерактивная работа: Out-ConsoleGridView

Серия Философия PowerShell
  • В первой части мы определили два ключевых понятия powershell: конвейер и объект.

  • Во второй части я рассказал как объекты взаимодействуют через переменные и конвейер.

  • В третьей части познакомились с файловой системой и провайдерами.

  • Сегодня рассмотрим интерактивную работу с данными в консоли.

Дисклеймер. На пикабу нет редактора кода, поэтому картинки и кривое форматирование. В конце поста я размещу ссылки на статью и исходники в github. Приятного чтения.

Out-ConsoleGridView. GUI в консоли PowerShell.

❗ Важно: Все описываемые ниже инструменты требуют PowerShell 7.2 или новее.

Out-ConsoleGridView — это интерактивная таблица, прямо в консоли PowerShell, позволяющая:

  • просматривать данные в виде таблицы;

  • фильтровать и сортировать колонки;

  • выбирать строки курсором — для передачи их дальше по конвейеру.

  • и многое другое.

Out-ConsoleGridView является частью модуля Microsoft.PowerShell.ConsoleGuiTools. Для его использования сначала нужно установить этот модуль.

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

Install-Module Microsoft.PowerShell.ConsoleGuiTools -Scope CurrentUser

Install-Module загружает и устанавливает указанный модуль из репозитория в систему. Аналоги: pip install в Python и npm install в Node.js.

📎 Ключевые параметры Install-Module


Ключевые параметры Install-Module

Ключевые параметры Install-Module

После установки вы можете передавать любой вывод в Out-ConsoleGridView для интерактивной работы.

# Классческий пример: вывод списка процессов в интерактивную таблицу:
> Get-Process | Out-ConsoleGridView

Интерфейс:

  • Фильтрация: Просто начните вводить текст, и список будет отфильтрован на лету.

  • Навигация: Используйте клавиши-стрелки для перемещения по списку.

  • Выбор: Нажмите Space для выбора/снятия выделения с одного элемента.

  • Множественный выбор: Ctrl+A для выбора всех элементов, Ctrl+D для снятия всего выделения.

  • Подтверждение: Нажмите Enter, чтобы вернуть выбранные объекты.

  • Отмена: Нажмите ESC, чтобы закрыть окно без возврата данных.

Что умеет Out-ConsoleGridView:

  • Отображать табличные данные прямо в консоли в виде интерактивной таблицы с навигацией по строкам и столбцам.

  • Сортировать столбцы по нажатию клавиш.

  • Фильтровать данные с помощью поиска.

  • Выбирать одну или несколько строк с возвратом результата.

  • Работать в чистой консоли без GUI-окон.

  • Поддерживать большое количество строк с прокруткой.

  • Поддерживать различные типы данных (строки, числа, даты и пр.).


Примеры использования Out-ConsoleGridView

Базовое использование — показать таблицу с возможностью интерактивного выбора. (checkbox)

Select process(es)

Select process(es)

Выводится список процессов в интерактивной консольной таблице. Можно фильтровать по имени, сортировать столбцы и выбирать процессы. Выбранные процессы возвращаются в переменную $selected.


Выбор одной строки с обязательным возвратом результата. (radio)

$choice = Get-Service | Select-Object -First 20 | Out-ConsoleGridView -Title "Select a service" -OutputMode Single Write-Host "You selected service: $($choice.Name)"

Пользователь выбирает одну строку. -OutputMode Single запрещает выбирать несколько.


Интерактивное управление процессами:

Вы можете выбрать несколько процессов для остановки. Параметр -OutputMode Multiple указывает, что мы хотим вернуть все выбранные элементы.

Интерактивное управление процессами

Интерактивное управление процессами

Выбор файлов для архивации:

Выбор файлов для архивации

Выбор файлов для архивации

Выбор одного элемента для детального анализа:

Паттерн "Drill-Down" — от общего списка к деталям с Out-ConsoleGridView

Часто при работе с системными объектами мы сталкиваемся с дилеммой:

  1. Если запросить все свойства для всех объектов (Get-NetAdapter | Format-List *), вывод будет огромным и нечитаемым.

  2. Если показать краткую таблицу, мы потеряем важные детали.

  3. Иногда попытка получить все данные сразу может привести к ошибке, если один из объектов содержит некорректные значения.

Решение этой проблемы — паттерн "Drill-Down" (детализация). Его суть проста:

  • Шаг 1 (Обзор): Показать чистый, краткий и безопасный список элементов для выбора.

  • Шаг 2 (Детализация): После того как пользователь выбрал один конкретный элемент, показать ему всю доступную информацию именно по этому элементу.

Практический пример: Создание обозревателя сетевых адаптеров

Задача: Сначала показать краткий список сетевых адаптеров. После выбора одного из них, открыть второе окно со всеми его свойствами.

Готовый код:

Создание обозревателя сетевых адаптеров

Создание обозревателя сетевых адаптеров


Информация о системе.

код скрипта для получения информации о системе: Get-SystemMonitor.ps1

Создание командлета 'Get-SystemMonitor'

Шаг 1: Настройка переменной PATH

  1. Создайте постоянную папку для ваших инструментов, если еще не сделали этого. Например: C:\PowerShell\Scripts

  2. Поместите ваш файл Get-SystemMonitor.ps1 в эту папку.

  3. Добавьте эту папку в системную переменную PATH,

Шаг 2: Настройка псевдонима (alias) в профиле PowerShell

  1. Откройте ваш файл профиля PowerShell:

    notepad $PROFILE

  2. Добавьте в него следующую строку:

    Set-Alias -Name sysmon -Value "Get-SystemMonitor.ps1"
    где sysmon - псевдоним командлета Get-SystemMonitor

    Если вы когда-нибудь переместите папку C:\PowerShell\Scripts, вам нужно будет обновить только переменную PATH, а ваш файл профиля останется без изменений.

Перезапустите PowerShell

Закройте все открытые окна PowerShell и откройте новое. Это необходимо, чтобы система применила изменения как в переменной PATH, так и в вашем профиле.

Код скрипта для установки C:\PowerShell\Scripts в PATH: Add-Path.ps1

Запуск:
Get-SystemMonitor
или конкретный ресурс:
Get-SystemMonitor -Resource users
Реализованы cpu, memory, system, network, users, peripherals

🤝 Поздравляю. Вы создали первый командлет.

Пост на github

Полезно? Подпишись.
Понравилось — ставь «+»
Задавайте вопросы в комментариях 👇👇👇
Удачи! 🚀

Серия постов о PowerShell

UPD:

Практические примеры использования:
Серия «Философия PowerShell». Практические примеры использования Out-ConsoleGridView

Серия «Философия PowerShell». Полное руководство по ExifTool и PowerShell (Out-ConsoleGridView)

А давайте встроим ии в powershell

Лига Сисадминов

2.4K поста19K подписчиков

Правила сообщества

Мы здесь рады любым постам связанным с рабочими буднями специалистов нашей сферы деятельности.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества