私は、ユーザーがそのDBにアクセスするために起動するRemoteAppをそれぞれ実行するDBサーバーをいくつか持っています。問題は、ユーザーがアプリケーションを終了したときにアプリケーション自体が常に正常に終了するとは限らないため、リモートセッションが開いたままになり、ユーザーがそのアプリに再度アクセスできなくなることです。
特定の各サーバーへの現在の既存の接続を終了するスクリプトを作成しようとしています(つまり、スクリプトAはRemoteApp Aで終了し、スクリプトBはRemoteApp Bで終了します)。
それがさらに複雑になるかどうかはわかりませんが、ユーザーはすべてリモートデスクトップ環境で作業しています(つまり、ユーザーはRDS1またはRDS2に接続し、そこからDB1、DB2などにRemoteAppを起動します)。
すべてのサーバーでWindowsServer 2012R2が実行されています。
Taskkill コマンドを使用して、特定のユーザー名として実行されている特定のサーバー上の特定のプロセスを強制終了できます(以下を参照)。
プロセスをターゲットにしてプロセスを強制終了します...
- 実行しているリモートサーバー名
- プロセスを実行しているユーザー名
- リモートサーバー上のプロセス名
コマンドの例
環境とニーズに応じて、以下の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