脚本powershell

时间:2016-08-01 09:00:24

标签: powershell popup message

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

2 个答案:

答案 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大多数时间都会容忍它们,但它们有时可能会引发问题。始终使用直引号是安全的。

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