Computer >> คอมพิวเตอร์ >  >> ระบบ >> Windows Server

การใช้ Out-GridView เพื่อดูและเลือกข้อมูลตารางใน PowerShell

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

การใช้ Out-GridView เพื่อดูและเลือกข้อมูลตารางใน PowerShell

อย่างที่คุณเห็น ตารางกราฟิกพร้อมรายการคุณสมบัติบริการของ Windows ปรากฏขึ้น cmdlet ตั้งชื่อคอลัมน์โดยอัตโนมัติตามคุณสมบัติของวัตถุหรือชนิดข้อมูล และขยายคุณสมบัติ PSObject หากไม่สามารถกำหนดรูปแบบข้อมูลได้

คุณสามารถค้นหาแบบฟอร์มโดยใช้ช่องตัวกรอง

การใช้ Out-GridView เพื่อดูและเลือกข้อมูลตารางใน PowerShell

คุณสามารถเข้าถึงข้อมูลในตาราง Excel ได้โดยตรงจาก PowerShell

คุณยังสามารถใช้ เพิ่มเกณฑ์ ปุ่มเพื่อค้นหาตาราง ในภาพหน้าจอด้านล่าง ฉันได้สร้างตัวกรองที่ง่ายที่สุดพร้อมรายการบริการที่ทำงานอยู่ที่มี VMW ในชื่อของพวกเขา ตัวกรองถูกสร้างขึ้นตามค่าของคุณสมบัติของวัตถุโดยตรง

การใช้ Out-GridView เพื่อดูและเลือกข้อมูลตารางใน PowerShell

หรือมาแสดงรายการกระบวนการ 10 อันดับแรกที่มีการใช้งาน CPU สูงสุด (ฉันได้เปลี่ยนชื่อหน้าต่าง Out-GridView โดยใช้ –Title ตัวเลือก):

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

คุณสามารถเรียงลำดับเนื้อหาตารางจากน้อยไปมาก/มากไปหาน้อยได้อย่างรวดเร็วโดยคลิกที่ส่วนหัวของคอลัมน์

การใช้ Out-GridView เพื่อดูและเลือกข้อมูลตารางใน PowerShell

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

สคริปต์จะรีสตาร์ทเฉพาะบริการที่ผู้ใช้เลือกเท่านั้น

การใช้ 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 . ค้างไว้ เพื่อเลือกหลายแถวในตาราง

วิธีใช้ 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

การใช้ Out-GridView เพื่อดูและเลือกข้อมูลตารางใน PowerShell

หากต้องการรับรายการเซสชัน 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

การใช้ 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 ตัวเลือก 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 ของคุณ