23

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

Серия Философия PowerShell

В предыдущей части мы познакомились с 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 }

  1. Вы получаете список всех служб.

  2. Внутри Out-ConsoleGridView вы вводите в фильтр sql и сразу видите все службы, относящиеся к SQL Server.

  3. Выбираете нужные и нажимаете Enter. Объекты выбранных служб передаются на перезапуск.

Пример 3: Очистка папки "Загрузки" от больших файлов

Со временем папка "Загрузки" забивается ненужными файлами. Найдем и удалим самые большие из них.

  1. Мы получаем все файлы, сортируем их по размеру и с помощью Select-Object создаем удобную колонку SizeMB.

  2. В Out-ConsoleGridView вы видите отсортированный список, где легко выбрать старые и большие .iso или .zip файлы.

  3. После выбора их полные пути передаются в 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 "Активные интернет-подключения"

  1. Get-NetTCPConnection -State Established собирает все установленные сетевые подключения.

  2. С помощью Select-Object мы формируем удобный отчет: добавляем имя процесса (ProcessName) к его ID (OwningProcess), чтобы было понятно, какая программа установила соединение.

  3. Out-ConsoleGridView показывает вам живую картину сетевой активности.



Пример 6: Анализ установки ПО и обновлений

Мы будем искать события от источника "MsiInstaller". Он отвечает за установку, обновление и удаление большинства программ (в формате .msi), а также за многие компоненты обновлений Windows.

Внутри таблицы: Вы можете отфильтровать список по названию программы (например, Edge или Office), чтобы увидеть всю историю ее обновлений. Вы можете отсортировать по Id, чтобы найти неудачные установки (11708).

Внутри таблицы: Вы можете отфильтровать список по названию программы (например, Edge или Office), чтобы увидеть всю историю ее обновлений. Вы можете отсортировать по Id, чтобы найти неудачные установки (11708).

Внутри таблицы:

  • Вы можете отфильтровать список по названию программы (например, Edge или Office), чтобы увидеть всю историю ее обновлений.

  • Вы можете отсортировать по Id, чтобы найти неудачные установки (11708).


Пример 7: Интерактивное удаление программ

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


Пример 8: Связывание (Chaining) Out-ConsoleGridView

Это самый мощный прием. Выход одной интерактивной сессии становится входом для другой. Задача: Выбрать одну из ваших папок с проектами, а затем выбрать из нее определенные файлы для создания ZIP-архива.

  1. Первый Out-ConsoleGridView показывает вам список папок внутри ваших "Документов". Вы можете быстро найти нужную, введя часть ее имени, и выбрать одну папку.

  2. Если папка была выбрана, скрипт немедленно открывает второй Out-ConsoleGridView, который показывает уже файлы внутри этой папки.

  3. Вы выбираете один или несколько файлов клавишей Space и нажимаете Enter.

  4. Скрипт берет выбранные файлы и создает из них ZIP-архив на вашем рабочем столе.

Это превращает сложную многошаговую задачу (найти папку, найти в ней файлы, скопировать их пути, запустить команду архивации) в интуитивно понятный интерактивный процесс из двух шагов.


Пример 9: Управление опциональными компонентами Windows

Вы можете легко найти и отключить ненужные компоненты, например Telnet-Client или Windows-Sandbox.

Пример 10: Управление виртуальными машинами Hyper-V

Быстро остановить несколько виртуальных машин для обслуживания хоста.

Статья на github

Clear-DownloadsFolder.ps1

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

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

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

2.5K постов19K подписчиков

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

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

Темы

Политика

Теги

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

Сообщества

18+

Теги

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

Сообщества

Игры

Теги

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

Сообщества

Юмор

Теги

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

Сообщества

Отношения

Теги

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

Сообщества

Здоровье

Теги

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

Сообщества

Путешествия

Теги

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

Сообщества

Спорт

Теги

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

Сообщества

Хобби

Теги

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

Сообщества

Сервис

Теги

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

Сообщества

Природа

Теги

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

Сообщества

Бизнес

Теги

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

Сообщества

Транспорт

Теги

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

Сообщества

Общение

Теги

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

Сообщества

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

Теги

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

Сообщества

Наука

Теги

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

Сообщества

IT

Теги

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

Сообщества

Животные

Теги

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

Сообщества

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

Теги

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

Сообщества

Экономика

Теги

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

Сообщества

Кулинария

Теги

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

Сообщества

История

Теги

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

Сообщества