我创建了PowerShell
脚本,它在计算机上安装了一个应用程序(Windows 7)。
此脚本位于GPO中,并在登录用户的GPO中部署。这工作正常,但我希望在安装结束时,我的powershell脚本会在计算机上的当前登录用户发送一条消息,例如"请重新启动计算机"。
我测试了很多东西,但我没有查看弹出窗口,可能是因为我的脚本是以管理员权限执行的(不是用户权限)。
测试:
#$wshell = New-Object -ComObject Wscript.Shell
#$wshell.Popup("Operation Completed",0,"Done",0x1)
[Windows.Forms.MessageBox]::Show(“My message”, , [Windows.Forms.MessageBoxButtons]::OK, [Windows.Forms.MessageBoxIcon]::Information)
答案 0 :(得分:1)
您的脚本可能会弹出消息,但之后立即关闭PowerShell
控制台,删除弹出窗口。在关闭PowerShell
实例之前尝试等待弹出窗口的结果:
$wshell = New-Object -ComObject Wscript.Shell
$result = $wshell.Popup("Operation Completed",0,"Done",0x1)
答案 1 :(得分:0)
您需要首先加载提供MessageBox
类的程序集,如果要指定按钮和/或图标,则不能省略消息框标题。
Add-Type -Assembly 'System.Windows.Forms'
[Windows.Forms.MessageBox]::Show(“My message”, "", [Windows.Forms.MessageBoxButtons]::OK, [Windows.Forms.MessageBoxIcon]::Information)
# ^^
您可以在此处使用空字符串或$null
,但不允许提供值(就像您在VBScript中所做的那样)。
作为旁注,我建议您在代码中避免使用印刷引号。尽管PowerShell大多数时间都会容忍它们,但它们有时可能会引发问题。始终使用直引号是安全的。
编辑:由于您通过计算机策略运行脚本,因此无法向登录用户显示消息框,因为它在不同的用户上下文中运行。您所能做的就是让用户登录脚本检查软件是否已安装,然后向用户显示消息。这是有效的,因为用户登录脚本在用户的上下文中运行。