「アクティブな」リモートデスクトップセッションのみを取得する

「アクティブな」リモートデスクトップセッションのみを取得する

Windows では、次のコマンドを使用して特定のサーバー上のリモート デスクトップ セッションを取得できます。

qwinsta /server:SERVER_NAME

しかし、これにより、さまざまな状態 (例: アクティブ、ディスク、...) のセッションが提供されます。

「アクティブ」セッションを取得するコマンド、バッチファイル、またはスクリプトについて知っている人はいませんか? 通常の Windows 7 クライアントから実行できるようにしたいと考えています。

答え1

qwinsta /server:SERVER_NAME | find /I "Active"

これは、単に「Active」(小文字または大文字)を含むすべての行を吐き出すだけの、手っ取り早いワンライナーであることに注意してください。この文字列を含むユーザー名を期待する場合は、状況がさらに複雑になり、正しい「Active」文字列の 4 番目の列を確認する必要があります。

for /F "usebackq tokens=1,2,3,4,5*" %i in (`qwinsta /server:SERVER_NAME ^| find "Active"`) do if "%l" == "Active" ( echo %i %j %k %l %m )

いずれにせよ出力の単一のフィールドを処理する必要がある場合は、%i...%m変数内のフィールドが公開されるため、後者の形式が推奨されます。

ただし、ユーザー名にスペースが含まれている場合、この構造も機能しなくなります。この場合、qwinsta ではすべて失われ、代わりにユーザー リストを取得する PowerShell 関数を探す必要があります。

関連情報