如何显示来自PowerShell的弹出窗口或者气球提示通知?
时间:2020-01-09 10:46:45 来源:igfitidea点击:
尽管PowerShell是一种控制台语言,但有时还是有必要从PS脚本中通知用户有关特定事件的信息,或者提示他们执行某些操作。例如,我们可以显示有关重型PoSh脚本已完成或者发生重要事件的弹出通知或者气球提示。
最简单的方法是使用PowerShell的Windows脚本子系统(Wscript)调用来显示包含任何文本的窗口。
此PowerShell代码将显示一个带有消息和"确定"按钮的公共窗口。
$wshell = New-Object -ComObject Wscript.Shell $Output = $wshell.Popup("The report generation script is successfully completed!")
使用Popup
方法的不同属性,我们可以自定义包含消息文本的模态窗口的外观。我们还可以返回用户回答的脚本(是/否)。
$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方法的常规语法和可用参数:
Popup(<Text>,<SecondsToWait>,<Title>,<Type>)
参数:
- Text 消息文本(字符串);
- SecondsToWait 一个数字(可选)。消息窗口将自动关闭的秒数;
- Title 字符串(可选)。弹出窗口的标题文本(标题);
- Type 数字(可选)。确定按钮和图标类型的标志的组合。
可能的类型标志值:
- 0 OK按钮;
- 1个确定和取消按钮;
- 2个"停止","重试"和"跳过"按钮;
- 3是,否和取消按钮;
- 4是和否按钮;
- 5重试和取消按钮;
- 16停止图标;
- 32问题图标;
- 48感叹号图标;
- 64信息图标。
" Popup"方法返回一个整数,该整数允许我们知道用户单击了哪个按钮。可能的值:
- -1超时;
- 1个OK按钮;
- 2取消按钮;
- 3停止按钮;
- 4重试按钮;
- 5跳过按钮;
- 6是按钮;
- 7没有按钮。
通过Windows Forms API,可能会在Windows 7、8.1和10中显示更吸引人的弹出消息(气球提示)。以下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画廊中单独的PowerShell模块" BurntToast"。
该模块是使用Windows 10软件包管理器从联机存储库安装的:
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(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)