🪟

リモートデスクトップ セッション切断時に自動で再サインインさせる

に公開

Windows 11 Proをリモートデスクトップで操作を行った後、セッション切断時に自動でローカルマシンに再サインインしていてほしい場合があります。
本記事では、RDPセッション切断時に、自動サインイン用のスクリプトをタスクスケジューラで自動実行させることで対応を行いました。


環境

  • Windows 11 Pro 25H2

自動再サインインスクリプトの作成

以下に示す2つのファイルを作成し、任意のディレクトリに配置します。
このとき、 RDP2Console.ps1 は、1行目のユーザー名を書き換えることを忘れないでください。

RDP2Console.ps1
$username = "【ユーザー名】"
$targetLine = query session | Where-Object { $_ -match $username }

if (-not $targetLine) {
    exit 1
}

if ($targetLine -match '.*(\d+).*Disc') {
    $sessionId = [int]$Matches[1]
} else {
    exit 1
}
tscon $sessionId /dest:console
Launcher.bat
@echo off
SET ScriptPath=%~dp0RDP2Console.ps1
powershell.exe -NoLogo -NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -File "%ScriptPath%"

タスク スケジューラの設定

  • タスクスケジューラを起動します
  • 右クリックで 新しいタスクの作成 を選択します
  • 全般 タブを、以下の画像の通り設定します
  • トリガー タブに値を新規で追加し、以下の画像の通り設定します
    • ログ : Microsoft-Windows-TerminalServices-LocalSessionManager/Operational
    • ソース : TerminalServices-LocalSessionManager
    • イベントID : 24
  • 操作 タブに値を新規で追加し、先ほど用意した Launcher.bat を設定します
  • 条件設定 はお好みで設定します


以上です。
PC起動時にパスワードが要求される設定になっている場合は、 tscon コマンドの際にパスワードを引数で渡してあげる必要があるかもしれません。
その場合は、 /password:【パスワード】tscon の行の末尾に追加してみてください。

Discussion