我有几个数据库服务器,每个服务器都运行一个 RemoteApp,用户启动该应用程序来访问所述数据库。问题是,当用户结束应用程序时,应用程序本身并不总是正常退出,这会使远程会话保持打开状态,并且用户无法再次访问该应用程序。
我正在尝试创建一个脚本,它将终止与每个特定服务器的任何当前现有连接(即,脚本 A 将终止 RemoteApp A,脚本 B 将终止 RemoteApp B)。
不确定这是否会增加额外的复杂性,但用户都在远程桌面环境中工作(即用户连接到 RDS1 或 RDS2,然后从那里启动 RemoteApps 到 DB1、DB2 等)。
所有服务器均运行 Windows Server 2012 R2。
答案1
你可以使用任务杀死命令来终止以特定用户名运行的特定服务器上的特定进程(见下文)。
根据以下内容定位并终止某个进程......
- 正在运行的远程服务器名称
- 运行该进程的用户名
- 远程服务器上的进程名称
示例命令
请确保根据您的环境和需求在下面的 taskkill 命令的 、 和 部分<RemoteServerName>
中<Username>
设置适当的值。<appname.exe>
TASKKILL /S <RemoteServerName> /F /FI "USERNAME eq <Username>" /IM <appname.exe>
更多资源
Taskkill /?
/S system Specifies the remote system to connect to. /FI filter Applies a filter to select a set of tasks. Allows "*" to be used. ex. imagename eq acme* /F Specifies to forcefully terminate the process(es). /IM imagename Specifies the image name of the process to be terminated. Wildcard '*' can be used to specify all tasks or image names Filters: USERNAME eq, ne User name in [domain\]user format