web-dev-qa-db-ja.com

リモートデスクトップセッションとスタンバイを終了する

コンピューター(RDP経由のWindows 7 Pro x64)でリモートアクセスをセットアップしました。 [WOL] wake-on-lan機能はすでに機能しているので、スリープ状態から復帰できます。リモートデスクトップセッションを終了すると(start-menu-> logout)、コンピューターはログイン画面に留まり、スリープ状態に戻りません。

リモートPCから1. end (disconnect or logout) RDPまで実行できるバッチファイル(または実際には何か)が欲しいセッションと2. PCをスリープ状態にします(ユーザーをログアウトする必要はありません)

ユーザーがログアウトしてから30秒後にコンピューターをスリープ状態にするWindowsタスクを設定してみました(動作しませんでした)。すでにバッチファイルを使用してスリープ状態にしようとしましたが、セッションが実行され続け、何もできず、PCをハードブートする必要がありました。

2
Niphram

リモートデスクトップセッションとスタンバイを終了します

リモートPCからアクティブ化してセッションを終了し、PCをスリープ状態にすることができるバッチファイル(または実際には何か)を作成します(ユーザーをログアウトする必要はありません)


以下の2つのスクリプト例:

  1. LOGOFF;そして、
  2. rDPを使用する別のDISCONNECT(ログオフなし)

どちらが必要かわからなかったので、両方を以下に示します。これは、テストした結果からWindows7で正常に機能するはずです。

ログオフスクリプトについては、RDPに接続されたリモートセッションにのみ関心があるため、コンソール、システム、またはrdp-tpcリスニングセッションをログオフしないようにいくつかのifロジックを配置しました。

切断スクリプトの場合、必要に応じてそれを実行するセッションを切断するだけなので、このスクリプトに追加のロジックは必要ありません(これはおそらく必要なものです)

これを保存されたバッチスクリプトとして手動で実行し、切断スクリプトではなくログオフスクリプトを使用する場合は、すべてまたは該当するセッションをログオフする権限があることを前提としています。


バッチスクリプト

(このスクリプトは、現在のセッションが切断されてから5秒間待機してから、PCをスリープ状態にします。)

バッチスクリプトの例(DISCONNECTすべてのセッション)

@ECHO OFF

::: Disconnected current RDP session
TSDISCON 

::: Pause 5seconds before going to sleep ensuring enough time 
PING -n 5 127.0.0.1 > NUL

::: Put computer to sleep
%systemroot%\System32\rundll32.exe powrprof.dll,SetSuspendState 0,1,0

GOTO EOF

(このスクリプトは、すべてのセッションをログオフしてから30秒待機してから、PCをスリープ状態にします。)

警告:OPのニーズに合わせてこのバッチファイルをダブルクリックしても、このスクリプトをアドホックに実行することはできません。しかし、私はこれをボーナスアイテムとしてここに保管しました。スリープロジックが実行される前にアカウントをログオフするため、その特定のケースではそのスリープロジックは機能しません。これは、タスクスケジューラから実行する必要があります。with Highest Privileges、およびRun whether the user is logged on or not—スケジュールどおりではなく、この方法でセットアップし、必要に応じてタスクスケジューラからも開始/実行できると思いました。 (下のスクリーンショット)

バッチスクリプトの例(LOGOFFすべてのセッション)

@ECHO OFF

FOR /F %%S IN (

    '"QUERY SESSION /SM"'

) DO (

IF NOT %%~S==0 IF NOT %%~S==1 IF NOT %%~S==65536 RWINSTA %%~S

)

::: Pause 5 seconds before going to sleep ensuring enough time 
PING -n 5 127.0.0.1 > NUL

::: Put computer to sleep
%systemroot%\System32\rundll32.exe powrprof.dll,SetSuspendState 0,1,0

GOTO EOF

スクリーンショットのスケジュールされたタスクオプション

enter image description here


さらなる調査、読書、および情報源

1
Pimp Juice IT

これを試してください。RDPセッション中にデスクトップの空白の場所をクリックして、Alt + F4を押します。古い「電源」メニューが表示され、そこからコンピュータを強制的にスリープ状態にすることができます。これにより、もちろんRDPも切断されます。

0
monsune