![スクリプト - リモート デスクトップ セッションを切断するにはどうすればよいですか?](https://rvso.com/image/488026/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%20-%20%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%20%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%20%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E5%88%87%E6%96%AD%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
コンピューター (ローカル コンピューター) 上のアクティブなリモート デスクトップ セッションをすべて閉じる方法を探しています。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 モジュールを使用できます。
Get-TSSession -ComputerName server1 -State Active | Disconnect-TSSession -WhatIf