繁体   English   中英

脚本Powershell之后当前用户的弹出消息

[英]Popup message for current user after script powershell

我创建了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)

您的脚本可能会弹出消息,但之后立即关闭PowerShell控制台,并删除弹出窗口。 在关闭PowerShell实例之前,请尝试等待弹出结果:

$wshell = New-Object -ComObject Wscript.Shell
$result = $wshell.Popup("Operation Completed",0,"Done",0x1)

您需要首先加载提供MessageBox类的程序集,并且如果要指定按钮和/或图标,则不能省略消息框标题。

Add-Type -Assembly 'System.Windows.Forms'

[Windows.Forms.MessageBox]::Show(“My message”, "", [Windows.Forms.MessageBoxButtons]::OK, [Windows.Forms.MessageBoxIcon]::Information)
#                                              ^^

您可以在此处使用空字符串或$null ,但不允许仅不提供值(就像在VBScript中那样)。

作为附带说明,我建议您在代码中避免使用印刷引号。 尽管PowerShell在大多数情况下都能容忍它们,但有时它们可​​能会引起问题。 为了安全起见,请始终使用直引号。


编辑:由于您是通过计算机策略运行脚本的,因此它无法向登录的用户显示消息框,因为它是在不同的用户上下文中运行的。 您所能做的就是让用户登录脚本检查是否已安装软件,然后向用户显示一条消息。 之所以可行,是因为在用户上下文中运行的用户登录脚本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM