web-dev-qa-db-ja.com

ユーザーがリモートセッションを終了するためのスクリプト

私は、ユーザーがそのDBにアクセスするために起動するRemoteAppをそれぞれ実行するDBサーバーをいくつか持っています。問題は、ユーザーがアプリケーションを終了したときにアプリケーション自体が常に正常に終了するとは限らないため、リモートセッションが開いたままになり、ユーザーがそのアプリに再度アクセスできなくなることです。

特定の各サーバーへの現在の既存の接続を終了するスクリプトを作成しようとしています(つまり、スクリプトAはRemoteApp Aで終了し、スクリプトBはRemoteApp Bで終了します)。

それがさらに複雑になるかどうかはわかりませんが、ユーザーはすべてリモートデスクトップ環境で作業しています(つまり、ユーザーはRDS1またはRDS2に接続し、そこからDB1、DB2などにRemoteAppを起動します)。

すべてのサーバーでWindowsServer 2012R2が実行されています。

2
Mickycampbell

Taskkill コマンドを使用して、特定のユーザー名として実行されている特定のサーバー上の特定のプロセスを強制終了できます(以下を参照)。

プロセスをターゲットにしてプロセスを強制終了します...

  1. 実行しているリモートサーバー名
  2. プロセスを実行しているユーザー名
  3. リモートサーバー上のプロセス名

コマンドの例

環境とニーズに応じて、以下のtaskkillコマンドの<RemoteServerName><Username>、および<appname.exe>の部分に適切な値を設定してください。

TASKKILL /S <RemoteServerName> /F /FI "USERNAME eq <Username>" /IM <appname.exe>

その他のリソース

  • Taskkill

  • 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
    
2
Pimp Juice IT