web-dev-qa-db-ja.com

スクリプト-リモートデスクトップセッションを切断する方法

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

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

ありがとう、マーティン

8
Martin

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

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

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

tsdiscon n

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

セッション番号は

query session

ローカルコンピューター上のallセッションを閉じたいと言ったので、それを行う順序(つまり、セッションを最後に閉じる)に注意する必要があると思います。

4
Rob Levine

tsdisconユーティリティを使用して、セッションを切断できます。コマンドプロンプトから「クエリセッション」コマンドを使用する場合、IDのリストを表示して、それぞれに対してtsdisconコマンドを発行できます。

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

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

ここで、q.batは

query session /sm | find "Active"

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

2
Kevin Kuphal

Powershell Community Extensionsを調べてみてください。これには、Get、Stop、Disconnect TerminalSessionコマンドレットが含まれます。

2
Chad Miller

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.
1
JasonMArcher

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)

1
greg

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
)
1
Carly

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

1
Shay Levy

TSDISCONは「切断されたセッションを削除しません。

TSDISCONをログオフに置き換えました。

1
Gil

コンピュータをシャットダウンまたは再起動せずにこれを実行するかどうかは指定しませんでした。ただし、再起動またはシャットダウンを気にしない場合は、次のように呼び出すだけです。

shutdown -r -f -m \\computer_to_restart

これにより、コンピュータが強制的に再起動されます。

0
Nick Berardi

TSDisconコマンドは、ターミナルサービス(RDP)セッションを切断します。単独で使用すると、現在のセッションを切断します。切断するセッションのセッションIDを指定できます。切断するサーバー名を指定することもできます。

詳細は こちら をご覧ください。

0
Sam Cogan