Mặc dù PowerShell là một ngôn ngữ giao diện điều khiển, nhưng đôi khi cần phải thông báo cho người dùng từ tập lệnh PS về một sự kiện cụ thể hoặc nhắc họ làm điều gì đó. Ví dụ:bạn có thể hiển thị thông báo bật lên hoặc mẹo bong bóng về việc hoàn thành tập lệnh PoSh nặng hoặc khi một sự kiện quan trọng xảy ra.
Cách dễ nhất là hiển thị một cửa sổ chứa bất kỳ văn bản nào bằng cách sử dụng hệ thống con tập lệnh Windows ( Wscript ) gọi từ PowerShell.
Mã PowerShell này sẽ hiển thị một cửa sổ chung với tin nhắn của bạn và nút OK.
$wshell = New-Object -ComObject Wscript.Shell
$Output = $wshell.Popup("The report generation script is successfully completed!")
Sử dụng các thuộc tính khác nhau của Cửa sổ bật lên , bạn có thể tùy chỉnh giao diện của cửa sổ phương thức chứa văn bản tin nhắn của bạn. Bạn cũng có thể quay lại tập lệnh câu trả lời của người dùng (Có / Không).
$Output = $wshell.Popup("The report generation script is successfully completed! Do you want to display a report on the screen?",0,"The report is ready",4+32)
Cú pháp chung và các tham số có sẵn của phương thức Cửa sổ bật lên:
Popup(<Text>,<SecondsToWait>,<Title>,<Type>)
Các thông số:
- <
Text
> - một văn bản tin nhắn (chuỗi); - <
SecondsToWait
> - một số (tùy chọn). Số giây mà sau đó cửa sổ tin nhắn sẽ tự động đóng lại; - <
Title
> —String (tùy chọn). Văn bản tiêu đề (chú thích) của cửa sổ bật lên; - <
Type
> —Number (tùy chọn). Sự kết hợp của các cờ xác định loại nút và biểu tượng.
:
-
- 0 - Nút OK;
- 1 - Các nút OK và Cancel;
- 2 - Các nút Dừng, Thử lại và Bỏ qua;
- 3 - Các nút Có, Không và Hủy;
- 4 - Các nút Có và Không;
- 5 - Các nút Thử lại và Hủy;
- 16 - Biểu tượng dừng;
- 32 - Biểu tượng câu hỏi;
- 48 - Biểu tượng dấu chấm than;
- 64 - Biểu tượng thông tin.
Cửa sổ bật lên phương thức trả về một số nguyên cho phép biết, người dùng đã nhấp vào nút nào. Giá trị có thể có:
- -1 - thời gian chờ;
- 1 - Nút OK;
- 2 - Nút Hủy;
- 3 - Nút dừng;
- 4 - Nút thử lại;
- 5 - Nút bỏ qua;
- 6 - Nút Có;
- 7 - Không có nút.
Thông báo bật lên hấp dẫn hơn (mẹo bong bóng) có thể được hiển thị trong Windows 7, 8.1 và 10 thông qua API biểu mẫu Windows . Mã PowerShell sau sẽ hiển thị một thông báo bật lên bên cạnh thanh Thông báo của Windows 10 và sẽ tự động biến mất sau 20 giây.
Add-Type -AssemblyName System.Windows.Forms
$global:balmsg = New-Object System.Windows.Forms.NotifyIcon
$path = (Get-Process -id $pid).Path
$balmsg.Icon = [System.Drawing.Icon]::ExtractAssociatedIcon($path)
$balmsg.BalloonTipIcon = [System.Windows.Forms.ToolTipIcon]::Warning
$balmsg.BalloonTipText = ‘This is the pop-up message text for the Windows 10 user'
$balmsg.BalloonTipTitle = "Attention $Env:USERNAME"
$balmsg.Visible = $true
$balmsg.ShowBalloonTip(20000)
Để tạo thông báo bật lên đầy màu sắc trong Windows 10 (PowerShell 5.0+), bạn cũng có thể sử dụng mô-đun PowerShell riêng BurntToast từ thư viện PowerShell.
Mô-đun được cài đặt từ kho lưu trữ trực tuyến bằng Trình quản lý gói Windows 10:
Install-Module -Name BurntToast
Ví dụ:bây giờ bạn có thể dễ dàng thêm thông báo đầy màu sắc vào tập lệnh từ bài viết “Cách tự động tắt Wi-Fi khi cáp Ethernet được kết nối”:
New-BurntToastNotification -Text "Disconnecting from Wi-Fi network", "You have been disconnected from your Wi-Fi network since your device was connected to a high-speed Ethernet LAN" -AppLogo C:\PS\changenetwork.png
Do đó, bạn biết cách hiển thị thông báo cho người dùng với PowerShell. Nếu người dùng có loa, bạn thậm chí có thể phát giai điệu yêu thích:
[console]::beep(440,500)
[console]::beep(440,500)
[console]::beep(440,500)
[console]::beep(349,350)
[console]::beep(523,150)
[console]::beep(440,500)
[console]::beep(349,350)
[console]::beep(523,150)
[console]::beep(440,1000)
[console]::beep(659,500)
[console]::beep(659,500)
[console]::beep(659,500)
[console]::beep(698,350)
[console]::beep(523,150)
[console]::beep(415,500)
[console]::beep(349,350)
[console]::beep(523,150)
[console]::beep(440,1000)
[console]::beep(880,500)
[console]::beep(440,350)
[console]::beep(440,150)
[console]::beep(880,500)
[console]::beep(830,250)
[console]::beep(784,250)
[console]::beep(740,125)
[console]::beep(698,125)
[console]::beep(740,250)
[console]::beep(455,250)
[console]::beep(622,500)
[console]::beep(587,250)
[console]::beep(554,250)
[console]::beep(523,125)
[console]::beep(466,125)
[console]::beep(523,250)
[console]::beep(349,125)
[console]::beep(415,500)
[console]::beep(349,375)
[console]::beep(440,125)
[console]::beep(523,500)
[console]::beep(440,375)
[console]::beep(523,125)
[console]::beep(659,1000)
[console]::beep(880,500)
[console]::beep(440,350)
[console]::beep(440,150)
[console]::beep(880,500)
[console]::beep(830,250)
[console]::beep(784,250)
[console]::beep(740,125)
[console]::beep(698,125)
[console]::beep(740,250)
[console]::beep(455,250)
[console]::beep(622,500)
[console]::beep(587,250)
[console]::beep(554,250)
[console]::beep(523,125)
[console]::beep(466,125)
[console]::beep(523,250)
[console]::beep(349,250)
[console]::beep(415,500)
[console]::beep(349,375)
[console]::beep(523,125)
[console]::beep(440,500)
[console]::beep(349,375)
[console]::beep(261,125)
[console]::beep(440,1000)