แม้ว่า PowerShell จะเป็นภาษาคอนโซล แต่บางครั้งก็จำเป็นต้องแจ้งให้ผู้ใช้ทราบจากสคริปต์ PS เกี่ยวกับเหตุการณ์หนึ่งๆ หรือแจ้งให้ผู้ใช้ดำเนินการบางอย่าง ตัวอย่างเช่น คุณสามารถแสดงการแจ้งเตือนแบบผุดขึ้นหรือคำแนะนำแบบบอลลูนเกี่ยวกับการเสร็จสิ้นของสคริปต์ PoSh จำนวนมาก หรือเมื่อมีเหตุการณ์สำคัญเกิดขึ้น
วิธีที่ง่ายที่สุดคือการแสดงหน้าต่างที่มีข้อความโดยใช้ระบบย่อยสคริปต์ Windows (Wscript ) โทรจาก PowerShell
รหัส PowerShell นี้จะแสดงหน้าต่างทั่วไปพร้อมกับข้อความและปุ่มตกลง
$wshell = New-Object -ComObject Wscript.Shell
$Output = $wshell.Popup("The report generation script is successfully completed!")
การใช้คุณสมบัติต่างๆ ของ ป๊อปอัป เมธอด คุณสามารถปรับแต่งลักษณะที่ปรากฏของหน้าต่างโมดอลที่มีข้อความของคุณ คุณยังสามารถกลับไปที่สคริปต์คำตอบของผู้ใช้ (ใช่/ไม่ใช่)
$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)
ไวยากรณ์ทั่วไปและพารามิเตอร์ที่ใช้ได้ของเมธอดป๊อปอัป:
Popup(<Text>,<SecondsToWait>,<Title>,<Type>)
พารามิเตอร์:
- <
Text
> — ข้อความ (สตริง); - <
SecondsToWait
> — ตัวเลข (ไม่บังคับ) จำนวนวินาทีหลังจากที่หน้าต่างข้อความจะปิดโดยอัตโนมัติ - <
Title
> —สตริง (ไม่บังคับ) ข้อความชื่อเรื่อง (คำอธิบายภาพ) ของหน้าต่างป๊อปอัป - <
Type
> —หมายเลข (ถ้ามี) การรวมค่าสถานะที่กำหนดประเภทของปุ่มและไอคอน
ค่าสถานะประเภทที่เป็นไปได้:
- 0 — ปุ่มตกลง;
- 1 — ปุ่มตกลงและยกเลิก
- 2 — ปุ่มหยุด ลองใหม่ และข้าม
- 3 — ใช่ ไม่ใช่ และปุ่มยกเลิก
- 4 — ปุ่มใช่และไม่ใช่
- 5 — ปุ่มลองอีกครั้งและยกเลิก
- 16 — ไอคอนหยุด
- 32 — ไอคอนคำถาม
- 48 — ไอคอนเครื่องหมายอัศเจรีย์
- 64 — ไอคอนข้อมูล
ป๊อปอัป วิธีคืนค่าจำนวนเต็มที่ช่วยให้รู้ว่าปุ่มใดที่ผู้ใช้คลิก ค่าที่เป็นไปได้:
- -1 — หมดเวลา;
- 1 — ปุ่มตกลง;
- 2 — ปุ่มยกเลิก
- 3 — ปุ่มหยุด
- 4 — ปุ่มลองอีกครั้ง
- 5 — ปุ่มข้าม
- 6 — ปุ่มใช่
- 7 — ไม่มีปุ่ม
ข้อความป๊อปอัปที่น่าสนใจยิ่งขึ้น (เคล็ดลับบอลลูน) อาจแสดงใน Windows 7, 8.1 และ 10 ผ่าน Windows Forms API . รหัส PowerShell ต่อไปนี้จะแสดงข้อความป๊อปอัปถัดจากแถบการแจ้งเตือนของ Windows 10 ที่จะหายไปโดยอัตโนมัติใน 20 วินาที
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)
หากต้องการสร้างข้อความป๊อปอัปที่มีสีสันใน Windows 10 (PowerShell 5.0+) คุณยังสามารถใช้โมดูล PowerShell แยกต่างหาก BurntToast จากแกลเลอรี PowerShell
โมดูลได้รับการติดตั้งจากที่เก็บออนไลน์โดยใช้ Windows 10 Package Manager:Install-Module -Name BurntToast
ตัวอย่างเช่น ตอนนี้คุณสามารถเพิ่มการแจ้งเตือนที่มีสีสันให้กับสคริปต์ได้อย่างง่ายดายจากบทความ “วิธีปิดการใช้งาน Wi-Fi โดยอัตโนมัติเมื่อเชื่อมต่อสายอีเทอร์เน็ต”:
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
ดังนั้น คุณจึงทราบวิธีแสดงการแจ้งเตือนไปยังผู้ใช้ด้วย PowerShell หากผู้ใช้มีลำโพง คุณยังสามารถเล่นเพลงโปรดได้:
[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)