Философия PowerShell. Часть 4. Интерактивная работа: Out-ConsoleGridView
В первой части мы определили два ключевых понятия 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
После установки вы можете передавать любой вывод в Out-ConsoleGridView для интерактивной работы.
# Классческий пример: вывод списка процессов в интерактивную таблицу:
> Get-Process | Out-ConsoleGridView
Интерфейс:
Фильтрация: Просто начните вводить текст, и список будет отфильтрован на лету.
Навигация: Используйте клавиши-стрелки для перемещения по списку.
Выбор: Нажмите Space для выбора/снятия выделения с одного элемента.
Множественный выбор: Ctrl+A для выбора всех элементов, Ctrl+D для снятия всего выделения.
Подтверждение: Нажмите Enter, чтобы вернуть выбранные объекты.
Отмена: Нажмите ESC, чтобы закрыть окно без возврата данных.
Что умеет Out-ConsoleGridView:
Отображать табличные данные прямо в консоли в виде интерактивной таблицы с навигацией по строкам и столбцам.
Сортировать столбцы по нажатию клавиш.
Фильтровать данные с помощью поиска.
Выбирать одну или несколько строк с возвратом результата.
Работать в чистой консоли без GUI-окон.
Поддерживать большое количество строк с прокруткой.
Поддерживать различные типы данных (строки, числа, даты и пр.).
Примеры использования Out-ConsoleGridView
Базовое использование — показать таблицу с возможностью интерактивного выбора. (checkbox)
Выводится список процессов в интерактивной консольной таблице. Можно фильтровать по имени, сортировать столбцы и выбирать процессы. Выбранные процессы возвращаются в переменную $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
Часто при работе с системными объектами мы сталкиваемся с дилеммой:
Если запросить все свойства для всех объектов (Get-NetAdapter | Format-List *), вывод будет огромным и нечитаемым.
Если показать краткую таблицу, мы потеряем важные детали.
Иногда попытка получить все данные сразу может привести к ошибке, если один из объектов содержит некорректные значения.
Решение этой проблемы — паттерн "Drill-Down" (детализация). Его суть проста:
Шаг 1 (Обзор): Показать чистый, краткий и безопасный список элементов для выбора.
Шаг 2 (Детализация): После того как пользователь выбрал один конкретный элемент, показать ему всю доступную информацию именно по этому элементу.
Практический пример: Создание обозревателя сетевых адаптеров
Задача: Сначала показать краткий список сетевых адаптеров. После выбора одного из них, открыть второе окно со всеми его свойствами.
Готовый код:
Информация о системе.
код скрипта для получения информации о системе: Get-SystemMonitor.ps1
Создание командлета 'Get-SystemMonitor'
Шаг 1: Настройка переменной PATH
Создайте постоянную папку для ваших инструментов, если еще не сделали этого. Например: C:\PowerShell\Scripts
Поместите ваш файл Get-SystemMonitor.ps1 в эту папку.
Добавьте эту папку в системную переменную PATH,
Шаг 2: Настройка псевдонима (alias) в профиле PowerShell
Откройте ваш файл профиля PowerShell:
notepad $PROFILE
Добавьте в него следующую строку:
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
Полезно? Подпишись.
Понравилось — ставь «+»
Задавайте вопросы в комментариях 👇👇👇
Удачи! 🚀
Xbox не выдержал — и вылетел… в окно
Всем привет! Я вернулся с новой историей!
Презентация новых консолей — дело серьёзное. Тут тебе и красивые сцены, и спецэффекты, и пафосные фразы в духе: «самая мощная консоль в истории человечества». Но одна деталь, как оказалось, может всё испортить — особенно если эта деталь... Windows.
🟢 Итак, дело было на одной презентации Xbox. Люди собрались, расселись, камеры включились, ведущий пошёл в разнос про «инновации, мощь и будущее гейминга». И тут, как в плохом ситкоме, на экране...
Вылетает винда.
Да-да, та самая: синий рабочий стол, панель задач, мышка шевелится. Ни тебе заставки Xbox, ни фирменной оболочки, ни футуристических интерфейсов. Только честная Windows, такая, какой мы её помним с офиса.
🖥️ Причина? Оказалось, под красивые корпуса Xbox стояли обычные ПК — да ещё и без нормальной оболочки. То есть даже не удосужились поставить что-то, чтобы это хотя бы выглядело как Xbox.
🎭 Весь пафос презентации в этот момент сделал вот так: 💨
Комментарии публики были прекрасны:
– «Теперь понятно, почему Xbox запускается по 15 секунд…»
– «А я думал, что у меня единственного на Xbox трещит вентилятор как у пылесоса — а это, оказывается, ПК стоит!»
– «Ждём, когда PlayStation в следующий раз на сцене вылетит с экраном BIOS и мышкой...»
Конечно, потом всё замяли, перевели тему, и презентацию продолжили. Но осадочек остался — и, судя по мемам в сети, надолго.
Так что, друзья, делайте презентации по-человечески. А то выйдет как в том анекдоте:
«Мы хотели показать будущее гейминга, а показали Пуск → Параметры → Обновление и безопасность».
💬 А у вас были такие фейлы с техникой? Или может, кто-то из вас когда-то вёл презентацию и забыл выключить вкладку с “Вконтакте”? Делитесь в комментах — поржём всем Пикабу.
Doom
Надежный инсайдер: Microsoft разрабатывает эмулятор Xbox для PC
Вчера надежный инсайдер eXtas1s, который ранее уже неоднократно делился достоверной информацией касательно Xbox, рассказал о том, что Microsoft планирует добавить Steam в Microsoft Store:
Инсайдер: Microsoft тестирует добавление Steam в MS Store
Сегодня инсайдер поделился новой информацией касательно планов Microsoft на PC, Xbox и Game Pass:
Microsoft разрабатывает слой совместимости или оболочку, которая добавит в Windows консольный интерфейс (похожий на режим Big Picture в Steam), подходящий как для игр на ПК, так и для систем Xbox следующего поколения;
Microsoft разрабатывает эмулятор Xbox для Windows (архитектура x64), позволяющий пользователям играть в свою библиотеку Xbox на PC, эмулируя консоль, а не запуская собственные порты игр для ПК;
Сохранения и достижения будут разделены между Steam, Microsoft Store/Xbox и не будут синхронизироваться автоматически;
У Microsoft нет планов добавлять новые обратно совместимые игры сверх уже доступных, но работа эмулятора позволит запускать всю библиотеку Xbox на ПК;
Game Pass (включая PC Game Pass и Ultimate) останется стратегическим краеугольным камнем и не будет прекращена;
Появятся новые уровни в Game Pass: только в облаке, с рекламой, только для ПК, Ultimate и т.д.
Неизбежна реструктуризация цен: вероятно, повысится стоимость подписки, особенно для PC.
Портативная консоль Odin 2 Portal от Ayn Technologies
Компания Ayn Technologies представила свою новую портативную консоль: Odin 2 Portal.
Среди ее технических характеристик - процессор Snapdragon 8 Gen 2 SoC, 7-дюймовый OLED-экран и джойстики с эффектом Холла.
https://www.youtube.com/watch?v=P6sWkxihJek
Оцените невероятные возможности Odin 2 Portal и следите за новостями, чтобы не пропустить информацию о ее цене и старте продаж!
Стал известным бюджет разработки русской игровой консоли от одного чела
Вчера стал известен бюджет разработки игровой консоли, а то есть 1 млн рублей(для юмористов в коментах это не цена за консоль).Разработчик уверяет что такого бюджета должно хватить на дизайн корпуса, геймпад, операционку, разработку игр и т.д.