Серия «Философия PowerShell». Практические примеры использования Out-ConsoleGridView
В предыдущей части мы познакомились с Out-ConsoleGridView — мощным инструментом для интерактивной работы с данными прямо в терминале. Если вы не знаете, что такое Out-ConsoleGridView, рекомендую начать отсюда 👉 Интерактивная работа: Out-ConsoleGridView
Я не буду повторять теорию, а сразу перейду к практике и покажу 10 сценариев, в которых этот командлет может сэкономить системному администратору или продвинутому пользователю массу времени.
Дисклеймер. В пикабу нет редактора кода - поэтому такое форматирование и картинки. В конце поста я дам ссылку на github. Почитайте, и если вам интересно смотрите код на гитхабе
Out-ConsoleGridView — это не просто "просмотрщик". Это интерактивный фильтр объектов в середине вашего конвейера.
Предварительные требования:
PowerShell 7.2 или новее.
Установленный модуль Microsoft.PowerShell.ConsoleGuiTools. Если вы его еще не установили:
> Install-Module Microsoft.PowerShell.ConsoleGuiTools -Scope CurrentUser
Пример 1: Интерактивная остановка процессов
> # Выбираем процессы в интерактивном режиме
> $procsToStop = Get-Process | Sort-Object -Property CPU -Descending | Out-ConsoleGridView -OutputMode Multiple
> # Если что-то было выбрано, передаем объекты на остановку
> if ($procsToStop) {
$procsToStop | Stop-Process -WhatIf
}
Get-Process получает все запущенные процессы.
Sort-Object упорядочивает их по загрузке CPU, чтобы самые "прожорливые" были наверху.
Out-ConsoleGridView отображает таблицу. Вы можете ввести chrome или notepad, чтобы мгновенно отфильтровать список, и выбрать нужные процессы клавишей Space.
После нажатия Enter выбранные объекты процессов попадают в переменную $procsToStop и передаются в Stop-Process.
Пример 2: Управление службами Windows
Нужно быстро перезапустить несколько служб, связанных с одним приложением (например, SQL Server).
> $services = Get-Service | Out-ConsoleGridView -OutputMode Multiple -Title "Выберите службы для перезапуска" if ($services) { $services | Restart-Service -WhatIf }
Вы получаете список всех служб.
Внутри Out-ConsoleGridView вы вводите в фильтр sql и сразу видите все службы, относящиеся к SQL Server.
Выбираете нужные и нажимаете Enter. Объекты выбранных служб передаются на перезапуск.
Пример 3: Очистка папки "Загрузки" от больших файлов
Со временем папка "Загрузки" забивается ненужными файлами. Найдем и удалим самые большие из них.
Мы получаем все файлы, сортируем их по размеру и с помощью Select-Object создаем удобную колонку SizeMB.
В Out-ConsoleGridView вы видите отсортированный список, где легко выбрать старые и большие .iso или .zip файлы.
После выбора их полные пути передаются в Remove-Item.
Пример 4: Добавление пользователей в группу Active Directory
Вместо того чтобы вручную вводить имена пользователей, вы получаете удобный список, где можете быстро найти и выбрать нужных сотрудников по фамилии или логину.
Пример 5: Узнать, какие программы используют интернет прямо сейчас
Одна из частых задач: "Какая программа тормозит интернет?" или "Кто и куда отправляет данные?". С помощью Out-ConsoleGridView можно получить наглядный ответ.
> # Получаем все активные TCP-подключения
> $connections = Get-NetTCPConnection -State Established | Select-Object RemoteAddress, RemotePort, OwningProcess, @{Name="ProcessName"; Expression={(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).ProcessName}}
> # Выводим в интерактивную таблицу для анализа
> $connections | Out-ConsoleGridView -Title "Активные интернет-подключения"
Get-NetTCPConnection -State Established собирает все установленные сетевые подключения.
С помощью Select-Object мы формируем удобный отчет: добавляем имя процесса (ProcessName) к его ID (OwningProcess), чтобы было понятно, какая программа установила соединение.
Out-ConsoleGridView показывает вам живую картину сетевой активности.
Пример 6: Анализ установки ПО и обновлений
Мы будем искать события от источника "MsiInstaller". Он отвечает за установку, обновление и удаление большинства программ (в формате .msi), а также за многие компоненты обновлений Windows.
Внутри таблицы: Вы можете отфильтровать список по названию программы (например, Edge или Office), чтобы увидеть всю историю ее обновлений. Вы можете отсортировать по Id, чтобы найти неудачные установки (11708).
Внутри таблицы:
Вы можете отфильтровать список по названию программы (например, Edge или Office), чтобы увидеть всю историю ее обновлений.
Вы можете отсортировать по Id, чтобы найти неудачные установки (11708).
Пример 7: Интерактивное удаление программ
Вы получаете список всего установленного ПО. В интерфейсе вы можете легко найти и выбрать несколько программ для удаления.
Пример 8: Связывание (Chaining) Out-ConsoleGridView
Это самый мощный прием. Выход одной интерактивной сессии становится входом для другой. Задача: Выбрать одну из ваших папок с проектами, а затем выбрать из нее определенные файлы для создания ZIP-архива.
Первый Out-ConsoleGridView показывает вам список папок внутри ваших "Документов". Вы можете быстро найти нужную, введя часть ее имени, и выбрать одну папку.
Если папка была выбрана, скрипт немедленно открывает второй Out-ConsoleGridView, который показывает уже файлы внутри этой папки.
Вы выбираете один или несколько файлов клавишей Space и нажимаете Enter.
Скрипт берет выбранные файлы и создает из них ZIP-архив на вашем рабочем столе.
Это превращает сложную многошаговую задачу (найти папку, найти в ней файлы, скопировать их пути, запустить команду архивации) в интуитивно понятный интерактивный процесс из двух шагов.
Пример 9: Управление опциональными компонентами Windows
Вы можете легко найти и отключить ненужные компоненты, например Telnet-Client или Windows-Sandbox.
Пример 10: Управление виртуальными машинами Hyper-V
Быстро остановить несколько виртуальных машин для обслуживания хоста.
Статья на github
Полезно? Подпишись.
Понравилось — ставь «+»
Задавай вопросы в комментариях 👇👇👇
Удачи! 🚀






Лига Сисадминов
2.5K постов19K подписчиков
Правила сообщества
Мы здесь рады любым постам связанным с рабочими буднями специалистов нашей сферы деятельности.