コンピューター (ローカル コンピューター) 上のアクティブなリモート デスクトップ セッションをすべて閉じる方法を探しています。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