スクリプト - リモート デスクトップ セッションを切断するにはどうすればよいですか?

スクリプト - リモート デスクトップ セッションを切断するにはどうすればよいですか?

コンピューター (ローカル コンピューター) 上のアクティブなリモート デスクトップ セッションをすべて閉じる方法を探しています。Windows には、アクティブなセッションを確認するためのコマンド (rwinsta、qwinsta など) がいくつか含まれていますが、その情報を簡単に使用して (文字列を解析しない限り) すべてのセッションを閉じる方法がわかりません。

Powershell (または C#、バッチ) でローカル コンピューター上のすべてのリモート デスクトップ セッションを閉じる方法はありますか?

ありがとう、マーティン

答え1

/smより簡単に並べ替えるために、文書化されていないパラメータ for query session(バッチ ファイル内)を使用することもできます。

FOR /f %%G IN ('query session /sm') DO tsdiscon %%G

答え2

はい、コマンドラインから tsdiscon を使用します:

tsdiscon n

ここで、n はセッション ID に置き換える必要があります。

セッション番号は以下から取得できます。

query session

閉めたいとおっしゃっているので全てローカル コンピューターでセッションを実行する場合は、実行順序に注意する必要があると思います (つまり、最後にセッションを閉じます)。

答え3

あなたはtsdisconセッションを切断するユーティリティ。コマンド プロンプトから「query sessions」コマンドを使用すると、ID のリストが表示され、各 ID に対して tsdiscon コマンドを発行できます。

このようなループ構造は機能するはずです

FOR /f %%G IN ('q.bat') DO tsdiscon %%G

q.batは

query session /sm | find "Active"

これにより、リモート セッションのみが切断され、コンソール ユーザーは無視されます。

答え4

PSTerminalServices PowerShell モジュールを使用できます。

http://blogs.microsoft.co.il/blogs/scriptfanatic/archive/2010/02/22/psterminalservices-powershell-module-for-terminal-services.aspx

Get-TSSession -ComputerName server1 -State Active | Disconnect-TSSession -WhatIf

関連情報