コンピューター(ローカルコンピューター)上のアクティブなリモートデスクトップセッションをすべて閉じる方法を探しています。 Windowsには、アクティブなセッションを確認するためのコマンド(rwinsta、qwinstaなど)がいくつか含まれていますが、情報を簡単に使用して(文字列を解析しない限り)すべてのセッションを閉じる方法がわかりません。
Powershell(またはC#、バッチ)でローカルコンピューター上のすべてのリモートデスクトップセッションを閉じる方法はありますか?
ありがとう、マーティン
文書化されていない/sm
パラメータquery session
(バッチファイル)を使用すると、より簡単に並べ替えることができます。
FOR /f %%G IN ('query session /sm') DO tsdiscon %%G
はい、コマンドラインからtsdisconを使用します。
tsdiscon n
ここで、nはセッションIDに置き換える必要があります。
セッション番号は
query session
ローカルコンピューター上のallセッションを閉じたいと言ったので、それを行う順序(つまり、セッションを最後に閉じる)に注意する必要があると思います。
tsdisconユーティリティを使用して、セッションを切断できます。コマンドプロンプトから「クエリセッション」コマンドを使用する場合、IDのリストを表示して、それぞれに対してtsdisconコマンドを発行できます。
このようなループ構造は機能するはずです
FOR /f %%G IN ('q.bat') DO tsdiscon %%G
ここで、q.batは
query session /sm | find "Active"
これにより、リモートセッションが切断され、コンソールユーザーは無視されます。
Powershell Community Extensionsを調べてみてください。これには、Get、Stop、Disconnect TerminalSessionコマンドレットが含まれます。
Tsdisconを使用して、ローカルセッションまたはリモートセッションを切断できます。
Disconnects a terminal session.
TSDISCON [sessionid | sessionname] [/SERVER:servername] [/V]
sessionid The ID of the session.
sessionname The name of the session.
/SERVER:servername Specifies the Terminal server (default is current).
/V Displays information about the actions performed.
FOR /F %A IN (c:\scripts\ps\computers.txt) DO (FOR /f "tokens=2" %i IN ('qwinsta /SERVER:%A ^| find /i "disc"') **DO if "%i" NEQ "0" ECHO %i** | rwinsta %i /SERVER:%A /V)
OPはかなり古くなっていることはわかっていますが、これはあなたが望んでいることです(他の誰かが同じことをまだ探している場合は、とにかく返信すると思います)。
同様に、query/reset session
代わりに q/rwinsta
...
FOR /F %%A IN (computers.txt) DO (
FOR /f "tokens=2" %%i IN ('qwinsta /SERVER:%%A ^| find /i "disc"') DO ECHO %%i | rwinsta %%i /SERVER:%%A /V
)
PSTerminalServices PowerShellモジュールを使用できます。
Get-TSSession -ComputerName server1 -State Active | Disconnect-TSSession -WhatIf
TSDISCONは「切断されたセッションを削除しません。
TSDISCONをログオフに置き換えました。
コンピュータをシャットダウンまたは再起動せずにこれを実行するかどうかは指定しませんでした。ただし、再起動またはシャットダウンを気にしない場合は、次のように呼び出すだけです。
shutdown -r -f -m \\computer_to_restart
これにより、コンピュータが強制的に再起動されます。
TSDisconコマンドは、ターミナルサービス(RDP)セッションを切断します。単独で使用すると、現在のセッションを切断します。切断するセッションのセッションIDを指定できます。切断するサーバー名を指定することもできます。
詳細は こちら をご覧ください。