Скрипт для пользователей, завершающих удаленный сеанс
У меня есть пара серверов БД, на каждом из которых запущено приложение RemoteApp, которое пользователи запускают для доступа к указанной БД. Проблема в том, что само приложение не всегда корректно завершает работу, когда пользователь завершает его, что оставляет удаленный сеанс открытым, и пользователь не может снова получить доступ к указанному приложению.
То, что я пытаюсь создать сценарий, который будет разорвать любое текущее существующее соединение с каждым конкретным сервером (т. Е. Сценарий A будет прерван для RemoteApp A, сценарий B будет прерван для RemoteApp B).
Не уверен, добавляет ли это дополнительную сложность, но все пользователи работают в среде удаленного рабочего стола (то есть пользователь подключается к RDS1 или RDS2 и затем запускает RemoteApps в DB1, DB2 и т. Д.).
Все серверы работают под управлением Windows Server 2012 R2.
1 ответ
Вы можете использовать команды Taskkill для уничтожения определенного процесса на определенном сервере, работающем под определенным именем пользователя (см. Ниже).
Убить процесс, нацелив его на...
- имя удаленного сервера, на котором он работает
- имя пользователя, запускающего процесс
- имя процесса на удаленном сервере
Пример команды
Обязательно установите соответствующие значения в <RemoteServerName>
, <Username>
, а также <appname.exe>
части команды taskkill ниже соответственно для вашей среды и потребностей.
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