Chế độ xem ngoài lưới cmdlet cho phép hiển thị dữ liệu dưới dạng bảng đồ họa tương tác có thể được lọc hoặc sắp xếp dựa trên các tiêu chí khác nhau. Bạn có thể sử dụng lệnh ghép ngắn Out-Gridview trong các tập lệnh mà bạn muốn cung cấp cho người dùng GUI đơn giản nhất để chọn các đối tượng.
Trên thực tế, Out-GridView là một trình bao bọc để chạy .NET DataGridView , một biểu mẫu đồ họa tiêu chuẩn từ Windows Form Control .
Sử dụng Bảng Out-GridView
Hãy xem ví dụ đơn giản nhất về việc sử dụng lệnh ghép ngắn Out-GridView để hiển thị danh sách các dịch vụ Windows và một số thuộc tính của chúng:
Get-Service | Select DisplayName,Status,ServiceName,Can* | Out-GridView
Như bạn có thể thấy, một biểu mẫu bảng đồ họa với danh sách các thuộc tính dịch vụ của Windows đã xuất hiện. Lệnh ghép ngắn đặt tên cột tự động dựa trên thuộc tính đối tượng hoặc kiểu dữ liệu và mở rộng thuộc tính PSObject nếu không thể xác định định dạng dữ liệu.
Bạn có thể tìm kiếm biểu mẫu bằng cách sử dụng hộp Bộ lọc.
Bạn có thể truy cập dữ liệu trong bảng Excel trực tiếp từ PowerShell.
Bạn cũng có thể sử dụng Thêm tiêu chí để tìm kiếm trong bảng. Trong ảnh chụp màn hình bên dưới, tôi đã tạo bộ lọc đơn giản nhất với danh sách các dịch vụ đang chạy có VMW trong tên của họ. Bộ lọc được tạo trực tiếp dựa trên các giá trị của thuộc tính đối tượng.
Hoặc để hiển thị danh sách TOP 10 quy trình sử dụng CPU cao nhất (Tôi đã đổi tên cửa sổ Out-GridView của mình bằng cách sử dụng –Title tùy chọn):
Get-Process | Sort-Object CPU -Descending | Select -First 10 | Out-GridView -Title "Top 10 CPU processes"
Bạn có thể nhanh chóng sắp xếp nội dung bảng theo thứ tự tăng dần / giảm dần bằng cách nhấp vào tiêu đề cột.
Lệnh ghép ngắn Out-GridView với Công tắc PassThru
Tuy nhiên, tính năng Out-Gridview mạnh mẽ nhất là –PassThru , cung cấp một cấp độ mới của GUI thân thiện với người dùng cho các tập lệnh PowerShell của bạn.
Tùy chọn có sẵn trong PowerShell 3.0 hoặc cao hơn, cho phép người dùng chọn một hoặc nhiều đối tượng trong bảng và chuyển chúng bằng cách sử dụng đường ống tiêu chuẩn đến các lệnh ghép ngắn tiếp theo trong tập lệnh PowerShell của bạn.
Ví dụ:tập lệnh PowerShell sau đây hiển thị danh sách các dịch vụ Windows đang chạy. Người dùng chọn một dịch vụ trong danh sách và nhấp vào OK.
Get-Service | Where-Object {$_.status -eq 'running'}| Out-GridView -Title "Select service to restart" –PassThru -OutputMode Multiple | Restart-service –verbose
Tập lệnh sẽ chỉ khởi động lại dịch vụ do người dùng chọn.
Bạn có thể lưu các đối tượng được người dùng chọn vào một biến:
$Svcs = Get-Service | Where-Object {$_.status -eq 'running'}| Out-GridView -Title "Select services" –PassThru
Hoặc bạn có thể chỉ lưu các giá trị của một thuộc tính. Để làm điều đó, hãy thêm đường dẫn sau vào lệnh trước:
| Select -ExpandProperty Name
Bạn có thể cho phép người dùng chỉ chọn một mục hoặc nhiều mục trong bảng bằng các tùy chọn sau:
-OutputMode Single and -OutputMode Multiple
Nhấn và giữ Ctrl để chọn nhiều hàng trong bảng.
Cách sử dụng Out-Gridview làm GUI trong PowerShell Script?
Dưới đây là một số ví dụ thú vị hơn về việc sử dụng Out-GridView.
Để hiển thị danh sách các lệnh trước đó từ lịch sử PowerShell và chạy lại các lệnh đã chọn:
Get-History | Out-GridView -PassThru | Invoke-Expression
Để hiển thị danh sách các thành phần Windows bổ sung và cài đặt đã chọn (ví dụ:công cụ quản lý RSAT Active Directory và máy khách SSH):
Get-WindowsCapability -Online | Where-Object {$_.State –eq “NotPresent”}| Out-GridView -PassThru |Add-WindowsCapability –Online
Để nhận danh sách các phiên RDP từ Nhà môi giới kết nối của trang trại RDS của bạn và kết nối với màn hình đã chọn của người dùng bằng kết nối bóng 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
Bạn có thể sử dụng lệnh ghép ngắn Get-ADUser từ mô-đun AD PowerShell để hiển thị danh sách người dùng đã bật trong một đơn vị tổ chức cụ thể và đặt lại mật khẩu miền của người dùng:
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
Sử dụng Lệnh gọi, bạn có thể lấy dữ liệu từ các máy tính từ xa và hiển thị chúng trong bảng:
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.)
Tuy nhiên, bạn có thể sử dụng –ComputerName tùy chọn nhiều cmdlet phải truy cập Server Core. Ví dụ:
Get-Service -ComputerName lon-dc02 | Where-Object {$_.status -eq 'running'}| Out-GridView –Title "Select service to restart" -OutputMode Single|Restart-Service -Verbose
Vì một số lý do, Microsoft đã xóa lệnh ghép ngắn Out-GridView khỏi PowerShell Core 6.x, nhưng trả lại nó trong phiên bản 7.0. Nếu bạn đang sử dụng PowerShell 6.x, hãy cập nhật nó lên phiên bản mới nhất bằng lệnh sau:
iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI"
Như bạn có thể thấy, Out-GridView cho phép thêm giao diện đồ họa đẹp mắt vào các tập lệnh PowerShell của bạn.