当我使用PowerShell - Invoke-Command等远程运行命令或安装软件时,我希望有时能够在远程屏幕上显示一条消息,以便用户知道正在发生的事情,或者当工作完成等
我想如果可能的话,使这个消息看起来尽可能专业,例如,比只是一个标准的winform消息框更好,如果它可以做到吗?也许更像Windows 10的风格,如果可能的话,使用彩色背景和图片。
花了一些时间在谷歌上,但大多数似乎与使用过时的方法有关,如net-send或使用msg.exe。
感谢https://michlstechblog.info/blog/powershell-show-a-messagebox/
所以问题并不是创建消息框本身,而是让它在用户会话中显示。
所以当你对一个系统运行命令时,你使用你的信用来运行命令,因此它不会显示在用户会话中。您可以通过使用任务调度器在用户上下文中运行它来解决这个问题。我有一个脚本,为你做这一切,但是,我讨厌重新创建车轮,将不得不等到周一(当我在工作)张贴在这里。
它接受用户在会话中的输入,输出到vbs,然后通过消息将其复制到用户的机器上,并为登录的用户设置一个任务计划,立即运行。
edit:没有任务调度程序的脚本是这样的。我只是调用gwmi win32_computersystem | Select -ExpandProperty username
来获取当前用户登录并将其添加到任务中。
#Prompt for messge
$strMSG = Read-Host -Prompt "Enter message"
#deleting vbs if it exists
del C:brieftest.vbs
#creating vbs from scratch so it doesnt override
New-Item C:brieftest.vbs
#Appending each the values to a seperate line
Add-Content C:brieftest.vbs 'Set objShell = Wscript.CreateObject("WScript.Shell")'
Add-Content C:brieftest.vbs "strText = `"$strMSG`""
Add-Content C:brieftest.vbs 'intButton = objShell.Popup(strText,0,"Computer Support",48)'
#calling on the script
& cscript C:brieftest.vbs
在这里找到了一个很好的解决方案,在快速测试中可以很好地在远程机器上显示toast通知
https://smsagent.blog/2019/06/11/just-for-fun-send-a-remote-toast-notification/