Out-GridView cmdlet을 사용하면 데이터를 다양한 기준에 따라 필터링하거나 정렬할 수 있는 대화형 그래픽 테이블로 표시할 수 있습니다. 사용자에게 개체를 선택할 수 있는 가장 간단한 GUI를 제공하려는 스크립트에서 Out-Gridview cmdlet을 사용할 수 있습니다.
사실 Out-GridView는 .NET DataGridView를 실행하기 위한 래퍼입니다. , Windows Form Control의 표준 그래픽 형식 .
Out-GridView 테이블 사용
Out-GridView cmdlet을 사용하여 Windows 서비스 및 해당 속성의 목록을 표시하는 가장 간단한 예를 살펴보겠습니다.
Get-Service | Select DisplayName,Status,ServiceName,Can* | Out-GridView
보시다시피 Windows 서비스 속성 목록이 있는 그래픽 테이블 형식이 나타납니다. cmdlet은 개체 속성 또는 데이터 형식에 따라 열 이름을 자동으로 설정하고 데이터 형식을 정의할 수 없는 경우 PSObject 속성을 확장합니다.
필터 상자를 사용하여 양식을 검색할 수 있습니다.
PowerShell에서 직접 Excel 테이블의 데이터에 액세스할 수 있습니다.
기준 추가를 사용할 수도 있습니다. 버튼을 눌러 테이블을 검색합니다. 아래 스크린샷에서 VMW가 있는 실행 중인 서비스 목록으로 가장 간단한 필터를 만들었습니다. 그들의 이름으로. 필터는 개체 속성 값을 기반으로 직접 생성됩니다.
또는 CPU 사용률이 가장 높은 TOP 10 프로세스 목록을 표시해 보겠습니다(–Title를 사용하여 Out-GridView 창의 이름을 변경했습니다. 옵션):
Get-Process | Sort-Object CPU -Descending | Select -First 10 | Out-GridView -Title "Top 10 CPU processes"
열 머리글을 클릭하면 표 내용을 오름차순/내림차순으로 빠르게 정렬할 수 있습니다.
PassThru Switch가 있는 Out-GridView cmdlet
그러나 가장 강력한 Out-Gridview 기능은 –PassThru PowerShell 스크립트를 위한 새로운 수준의 사용자 친화적인 GUI를 제공하는 옵션입니다.
이 옵션은 PowerShell 3.0 이상에서 사용할 수 있으며 사용자가 테이블에서 하나 이상의 개체를 선택하고 표준 파이프를 사용하여 PowerShell 스크립트의 다음 cmdlet에 전달할 수 있습니다.
예를 들어 다음 PowerShell 스크립트는 실행 중인 Windows 서비스 목록을 표시합니다. 사용자는 목록에서 서비스를 선택하고 확인을 클릭합니다.
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 and -OutputMode Multiple
Ctrl을 길게 누릅니다. 테이블에서 여러 행을 선택합니다.
PowerShell 스크립트에서 Out-Gridview를 GUI로 사용하는 방법
다음은 Out-GridView를 사용하는 몇 가지 흥미로운 예입니다.
PowerShell 기록에서 이전 명령 목록을 표시하고 선택한 명령을 다시 실행하려면:
Get-History | Out-GridView -PassThru | Invoke-Expression
추가 Windows 구성 요소 목록을 표시하고 선택한 설치(예:RSAT Active Directory 관리 도구 및 SSH 클라이언트):
Get-WindowsCapability -Online | Where-Object {$_.State –eq “NotPresent”}| Out-GridView -PassThru |Add-WindowsCapability –Online
RDS 팜의 연결 브로커에서 RDP 세션 목록을 가져오고 RDP 섀도 연결을 사용하여 사용자가 선택한 데스크톱에 연결하려면:
import-module remotedesktop
선택
$cbserver = "munrdsbroker1.woshub.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
AD PowerShell 모듈에서 Get-ADUser cmdlet을 사용하여 특정 OU의 활성화된 사용자 목록을 표시하고 사용자의 도메인 암호를 재설정할 수 있습니다.
Import-Module ActiveDirectory
$NewPasswd=Read-Host "Enter a new user password" –AsSecureString
Get-ADUser -filter {Enabled -eq "true"} -properties Name, displayname,EmailAddress,pwdLastSet -SearchBase ‘OU=Berlin,OU=DE,DC=woshub,DC=com’| Out-GridView -PassThru –title “Select a user to reset a password”| Set-ADAccountPassword -NewPassword $NewPasswd -Reset
Invoke-Command를 사용하여 원격 컴퓨터에서 데이터를 가져와 테이블에 표시할 수 있습니다.
Invoke-Command -ComputerName be-dc01, mun-dc01, mun-dc02 -ScriptBlock {Get-Culture} | Select-Object PSComputerName,DisplayName| Out-GridView
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=xxxxx' or one of its dependencies. The system cannot find the file specified.)
그러나 –ComputerName을 사용할 수 있습니다. 옵션 많은 cmdlet은 Server Core에 액세스해야 합니다. 예:
Get-Service -ComputerName lon-dc02 | Where-Object {$_.status -eq 'running'}| Out-GridView –Title "Select service to restart" -OutputMode Single|Restart-Service -Verbose
어떤 이유로 Microsoft는 PowerShell Core 6.x에서 Out-GridView cmdlet을 제거했지만 버전 7.0에서 반환했습니다. PowerShell 6.x를 사용하는 경우 다음 명령을 사용하여 최신 버전으로 업데이트하십시오.
iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI"
보시다시피 Out-GridView를 사용하면 PowerShell 스크립트에 멋진 그래픽 인터페이스를 추가할 수 있습니다.