
[英]Establishing PowerShell session on remote desktop, for user who is not an administrator
[英]How do I (administrator) gracefully close a window process running in another user session using powershell on Windows 2008 R2 Remote Desktop Services
如果我在会话中运行以下命令...
(Get-Process -Id $pid).CloseMainWindow()
我能够正常关闭进程(不会出现模式窗口或其他弹出窗口)。
但是,如果该pid在同一台计算机上的另一个用户会话中(正在运行RDS),则该进程不会关闭,并且CloseMainWindow()返回FALSE(如果在我自己的会话中运行,则返回TRUE)。 如果我从其他用户的会话中运行Powershell,它也将起作用。
我特别需要一种可以正常关闭程序的方法,因为该程序具有一些重要的清除操作,可以使其数据库保持秩序。 因此stop-process或process.kill()将不起作用。
经过长时间的研究,似乎不可能做到这一点。 但是,有一种解决方案至少可以满足我的一些要求。
您可以创建Windows计划任务,该任务在会话断开连接时触发。 这允许您以用户 (而不是管理员)身份运行清理作业,从而允许程序正常退出。
它有两个主要缺点。
即使用户只是轻微的网络中断,它也会被调用(因此,您必须在脚本中构建一个wait()函数以使其休眠一会儿,然后检查它是否仍然断开连接-这不是一个干净的解决方案。
注销事件期间不会调用它。 为此,您需要使用由GPO触发的注销脚本。
希望这对以后的人有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.