Использование командлета Out-Gridview для выбора в табличных данных в скриптах PowerShell

Командлет Out-GridView позволяет вывести данные в виде интерактивной графической таблицы с возможностью фильтрации и сортировки по различным признакам. Вы можете использовать командлет Out-Gridview в скриптах, где нужно предоставить простейший GUI интерфейс для выбора объектов пользователю.

Out-GridView по сути является оболочкой для запуска стандартной графической формы .NET DataGridView из Windows Form Control.

Рассмотрим простейший пример использования командлета для вывода списка служб Windows и некоторых их свойств :

Get-Service | Select DisplayName,Status,ServiceName,Can* | Out-GridView

Как вы видите перед вами открылась графическая форма с таблицей, представляющей список свойств служб Windows. Командлет автоматически именует столбцы на основе свойства объекта и типа данных, расширяет свойства PSObject, если определение формата недоступно.

Прямо из этой формы вы можете выполнять поиск либо с помощью поля для ввода Filter:

Из PowerShell вы можете напрямую обращаться в данным в таблицах Excel .

Либо с помощью кнопки Add criteria . На следующем скриншоте я создал простейший фильтр со списком запущенных служб, в имени которых есть символы VMW. Фильтр создается прямо по значениям свойств объектов.

Или, например, выведем список ТОП 10 процессов, которые сильнее всего используют CPU (с помощью параметра –Title я изменил заголовок окна Out-GridView):

Get-Process | Sort-Object CPU -Descending | Select -First 10 | Out-GridView -Title "Top 10 CPU processes"

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

Однако наиболее мощной возможностью Out-Gridview, которая предоставляет новый уровень удобного графического интерфейса для ваших PowerShell скриптов, является параметр –PassThru .

Данный параметр доступен начиная с версии PowerShell 3.0 и позволяет пользователю выбрать в таблице одну или несколько объектов и передать их по конвейеру через стандартный пайп на вход следующим командлетам в скрипте PowerShell.

Например, следующий PowerShell скрипт выведет в таблицу список запущенных служб Windows. Пользователь должен выбрать в таблице нужную службу и нажать Ok.

Get-Service | Where-Object {$_.status -eq 'running'}| Out-GridView -Title "Select service to restart" –PassThru -OutputMode Multiple | Restart-service –verbose

Скрипт перезапустит только выбранную пользователем службу.

Вы можете сохранить объекты, выбранный пользователем в переменную:

$Svcs = Get-Service | Where-Object {$_.status -eq 'running'}| Out-GridView -Title "Select services" –PassThru

Или можно сохранить только значения определенного свойства. Для этого добавьте к предыдущей команде:

| Select -ExpandProperty Name

Вы можете разрешить пользователю выбирать только один элемент в таблице или сразу несколько с помощью параметров:

-OutputMode Single и -OutputMode Multiple

Зажмите ctrl , чтобы выделить несколько разных строк в таблице.

Еще несколько интересных сценариев использования командлета Out-GridView.

Вывести список предыдущих команд из истории PowerShell и повторно выполнить выбранные команды:

Get-History | Out-GridView -PassThru | Invoke-Expression

Вывести список дополнительных компонентов Windows и установить выделенные компоненты (например инструменты управления Active Directory из RSAT и SSH клиент ):

Get-WindowsCapability -Online | Where-Object {$_.State –eq “NotPresent”}| Out-GridView -PassThru |Add-WindowsCapability –Online

Получить список RDP сессии с Connection Broker в RDS ферме и подключиться к выбранному пользователю с помощью теневого подключения :

import-module remotedesktop
$cbserver = "srv-rdsbroker1.remontka.com"
$id = get-rdusersession -ConnectionBroker $cbserver | Out-GridView -title "RD Connection" -PassThru | select hostserver, unifiedsessionid
$id2 = $id | select -ExpandProperty unifiedsessionid
$srv = $id | select -ExpandProperty hostserver
mstsc /v:"$srv" /shadow:"$id2" /control /noconsentprompt

С помощью командлета Get-ADUser из модуля AD PowerShell можно вывести список включенных пользователей в определенном OU и сбросить пароль в домене .

Import-Module ActiveDirectory
$NewPasswd=Read-Host "Введите новый пароль пользователя" –AsSecureString
Get-ADUser -filter {Enabled -eq "true"} -properties Name, displayname,EmailAddress,pwdLastSet -SearchBase ‘OU=ru,DC=test,DC=com’| Out-GridView -PassThru –title “Выберите пользователя чтобы сбросить пароль”| Set-ADAccountPassword -NewPassword $NewPasswd -Reset

Через Invoke-Command можно получить данные с удаленных компьютеров и представить их в таблице:

Invoke-Command -ComputerName msk-dc01, msk-dc02, msk-dc03 -ScriptBlock {Get-Culture} | Select-Object PSComputerName,DisplayName| Out-GridView

К сожалению, командлет Out-GridView нельзя использовать в Windows Server Core . При его запуске появляется ошибка:
out-gridview : To use the Out-GridView, install Windows PowerShell ISE by using Server Manager, and then restart this application. (Could not load file or assembly 'Microsoft.PowerShell.GraphicalHost, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.)

Но вы можете использовать для обращения к Server Core параметр –ComputerName , который есть у большинства командлетов. Например:

Get-Service -ComputerName msk-dc02 | Where-Object {$_.status -eq 'running'}| Out-GridView –Title "Select service to restart" -OutputMode Single|Restart-Service -Verbose

Microsoft по какой-то причине убрала командлет Out-GridView из PowerShell Core 6.x, но в 7.0 версии его вернули. Если у вас используется версиях PowerShell 6.x, обновите ее до последние командой:

iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI"

Как вы видите, Out-GridView позволяет добавить удобный графический интерфейс вашим скриптам PowerShell

admin

Share
Published by
admin

Recent Posts

Консоль удаленного рабочего стола(rdp console)

Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…

2 месяца ago

Настройка сети в VMware Workstation

В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…

2 месяца ago

Логи брандмауэра Windows

Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…

2 месяца ago

Правильный способ отключения IPv6

Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…

2 месяца ago

Ключи реестра Windows, отвечающие за параметры экранной заставки

Параметры экранной заставки для текущего пользователя можно править из системного реестра, для чего: Запустите редактор…

2 месяца ago

Как управлять журналами событий из командной строки

В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…

2 месяца ago