Out-GridView cmdlet อนุญาตให้แสดงข้อมูลเป็นตารางกราฟิกเชิงโต้ตอบที่สามารถกรองหรือเรียงลำดับตามเกณฑ์ที่แตกต่างกัน คุณสามารถใช้ Out-Gridview cmdlet ในสคริปต์ที่คุณต้องการให้ GUI ที่ง่ายที่สุดแก่ผู้ใช้ในการเลือกวัตถุ
อันที่จริง 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 หากไม่สามารถกำหนดรูปแบบข้อมูลได้
คุณสามารถค้นหาแบบฟอร์มโดยใช้ช่องตัวกรอง
คุณสามารถเข้าถึงข้อมูลในตาราง Excel ได้โดยตรงจาก PowerShell
คุณยังสามารถใช้ เพิ่มเกณฑ์ ปุ่มเพื่อค้นหาตาราง ในภาพหน้าจอด้านล่าง ฉันได้สร้างตัวกรองที่ง่ายที่สุดพร้อมรายการบริการที่ทำงานอยู่ที่มี VMW ในชื่อของพวกเขา ตัวกรองถูกสร้างขึ้นตามค่าของคุณสมบัติของวัตถุโดยตรง
หรือมาแสดงรายการกระบวนการ 10 อันดับแรกที่มีการใช้งาน CPU สูงสุด (ฉันได้เปลี่ยนชื่อหน้าต่าง Out-GridView โดยใช้ –Title ตัวเลือก):
Get-Process | Sort-Object CPU -Descending | Select -First 10 | Out-GridView -Title "Top 10 CPU processes"
คุณสามารถเรียงลำดับเนื้อหาตารางจากน้อยไปมาก/มากไปหาน้อยได้อย่างรวดเร็วโดยคลิกที่ส่วนหัวของคอลัมน์
Out-GridView cmdlet พร้อมสวิตช์ PassThru
อย่างไรก็ตาม คุณลักษณะ Out-Gridview ที่ทรงพลังที่สุดคือ –PassThru ซึ่งให้ระดับใหม่ของ GUI ที่ใช้งานง่ายสำหรับสคริปต์ PowerShell ของคุณ
ตัวเลือกนี้มีอยู่ใน PowerShell 3.0 หรือสูงกว่า ให้ผู้ใช้เลือกวัตถุตั้งแต่หนึ่งรายการขึ้นไปในตาราง และส่งผ่านโดยใช้ไพพ์มาตรฐานไปยัง cmdlet ถัดไปในสคริปต์ PowerShell ของคุณ
ตัวอย่างเช่น สคริปต์ 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 . ค้างไว้ เพื่อเลือกหลายแถวในตาราง
วิธีใช้ Out-Gridview เป็น GUI ใน PowerShell Script
ต่อไปนี้คือตัวอย่างที่น่าสนใจของการใช้ 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
หากต้องการรับรายการเซสชัน RDP จาก Connection Broker ของฟาร์ม RDS และเชื่อมต่อกับเดสก์ท็อปที่ผู้ใช้เลือกโดยใช้การเชื่อมต่อ RDP shadow:
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
คุณสามารถใช้ Get-ADUser cmdlet จากโมดูล AD PowerShell เพื่อแสดงรายการผู้ใช้ที่เปิดใช้งานใน 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 ตัวเลือก cmdlets จำนวนมากต้องเข้าถึง 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 ได้ลบ Out-GridView cmdlet ออกจาก PowerShell Core 6.x แต่ส่งคืนในเวอร์ชัน 7.0 หากคุณกำลังใช้ PowerShell 6.x ให้อัปเดตเป็นเวอร์ชันล่าสุดโดยใช้คำสั่งนี้:
iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI"
อย่างที่คุณเห็น Out-GridView อนุญาตให้เพิ่มอินเทอร์เฟซแบบกราฟิกที่ดีให้กับสคริปต์ PowerShell ของคุณ