Использование командлета 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

Apple: история логотипа

Как менялся логотип Apple на протяжении многих лет. Логотип Apple — это не просто символ,…

6 дней ago

Security Boot Fail при загрузке Acer — решение проблемы

Security Boot Fail при загрузке Acer — решение проблемы При загрузке ноутбука Acer с флешки,…

3 недели ago

Ноутбук не включается — варианты решения

Ноутбук не включается — варианты решения Если при попытке включить ноутбук вы обнаруживаете, что он…

3 недели ago

The AC power adapter wattage and type cannot be determined — причины и решение

The AC power adapter wattage and type cannot be determined — причины и решение При…

3 недели ago

Свистит или звенит блок питания компьютера — причины и решения

Свистит или звенит блок питания компьютера — причины и решения Некоторые владельцы ПК могут обратить…

3 недели ago

Мигает Caps Lock на ноутбуке HP — почему и что делать?

Мигает Caps Lock на ноутбуке HP — почему и что делать? При включении ноутбука HP…

3 недели ago