Computer >> 컴퓨터 >  >> 체계 >> Windows Server

Out-GridView를 사용하여 PowerShell에서 테이블 데이터 보기 및 선택

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

Out-GridView를 사용하여 PowerShell에서 테이블 데이터 보기 및 선택

보시다시피 Windows 서비스 속성 목록이 있는 그래픽 테이블 형식이 나타납니다. cmdlet은 개체 속성 또는 데이터 형식에 따라 열 이름을 자동으로 설정하고 데이터 형식을 정의할 수 없는 경우 PSObject 속성을 확장합니다.

필터 상자를 사용하여 양식을 검색할 수 있습니다.

Out-GridView를 사용하여 PowerShell에서 테이블 데이터 보기 및 선택

PowerShell에서 직접 Excel 테이블의 데이터에 액세스할 수 있습니다.

기준 추가를 사용할 수도 있습니다. 버튼을 눌러 테이블을 검색합니다. 아래 스크린샷에서 VMW가 있는 실행 중인 서비스 목록으로 가장 간단한 필터를 만들었습니다. 그들의 이름으로. 필터는 개체 속성 값을 기반으로 직접 생성됩니다.

Out-GridView를 사용하여 PowerShell에서 테이블 데이터 보기 및 선택

또는 CPU 사용률이 가장 높은 TOP 10 프로세스 목록을 표시해 보겠습니다(–Title를 사용하여 Out-GridView 창의 이름을 변경했습니다. 옵션):

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

열 머리글을 클릭하면 표 내용을 오름차순/내림차순으로 빠르게 정렬할 수 있습니다.

Out-GridView를 사용하여 PowerShell에서 테이블 데이터 보기 및 선택

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

스크립트는 사용자가 선택한 서비스만 다시 시작합니다.

Out-GridView를 사용하여 PowerShell에서 테이블 데이터 보기 및 선택

사용자가 선택한 개체를 변수에 저장할 수 있습니다.

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

또는 속성 값만 저장할 수 있습니다. 이를 수행하려면 이전 명령에 다음 파이프를 추가하십시오.

| Select -ExpandProperty Name 선택

Out-GridView를 사용하여 PowerShell에서 테이블 데이터 보기 및 선택

다음 옵션을 사용하여 사용자가 테이블에서 하나의 항목만 선택하거나 여러 항목을 선택하도록 허용할 수 있습니다.

-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

Out-GridView를 사용하여 PowerShell에서 테이블 데이터 보기 및 선택

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

Out-GridView를 사용하여 PowerShell에서 테이블 데이터 보기 및 선택

Invoke-Command를 사용하여 원격 컴퓨터에서 데이터를 가져와 테이블에 표시할 수 있습니다.

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

유감스럽게도 Out-GridView cmdlet은 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=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 스크립트에 멋진 그래픽 인터페이스를 추가할 수 있습니다.