Windows Server RDSホストでリモートデスクトップのドレインモードを設定する方法
RDSドレインモードを利用すると、リモートデスクトップサービス(RDS)ファーム内のターミナルホストを安全にメンテナンスできます。RDSサーバーでドレインモードを有効にすると、新しいユーザーのRDP接続を拒否しながら、既存のRD接続はユーザーが手動でログオフするか、RDSセッションタイムアウトによって自動的に切断されるまでアクティブなまま維持されます。これにより、RDSファーム全体の運用を中断することなく、Windowsアップデートの適用、サーバーやアプリケーションの設定変更、構成ファイルの更新などのメンテナンス作業を行うことが可能になります。
目次
- Windows Server リモートデスクトップサービスのドレインモードとは?
- RDセッションホストへの新規ユーザーログオンを拒否する方法
- PowerShellを使ったWindows Server RDSホストのドレインモード設定
Windows Server リモートデスクトップサービスのドレインモードとは?
ドレインモードは、Windows Server 2008のターミナルサービス(Terminal Services Server Drain mode)で初めて導入された機能です。RDSホストをドレインモードに切り替えると、そのホストは新しいユーザーの接続を受け付けなくなります。一般的に、このモードはサーバー管理者がRDSファーム全体の可用性に影響を与えることなくサーバーをメンテナンスする必要がある場合(Windowsアップデートのインストール、アプリケーションの構成や更新など)に使用されます。
RDSホストは、以下の3種類のドレインモードのいずれかで動作します。
- すべての接続を許可(Allow All Connections)(デフォルトモード)— RDセッションホストが新しい接続を受け付けます。
- 再接続を許可するが、新しいログオンは拒否(Allow Reconnections, but Prevent New Logons)— 既存セッションへの再接続は許可されますが、新しいセッションの作成は許可されません。サーバーを再起動すると、ユーザーはそのサーバーに接続できなくなります。
- サーバーが再起動されるまで再接続を許可するが、新しいログオンは拒否(Allow Reconnections, but Prevent New Logons until the Server Is Restarted)— 前のモードと似ていますが、再起動後はログオンモードが自動的に「すべての接続を許可」にリセットされます。
RDセッションホストへの新規ユーザーログオンを拒否する方法
RDSコレクションの設定から、RDSホストサーバーでドレインモードを有効にできます。手順は以下の通りです。
- サーバーマネージャーを開き、「すべてのサーバー」にファーム内のすべてのRDSサーバーを追加します。
- サーバーマネージャーの左パネルで「リモートデスクトップサービス」を選択し、「RDSコレクション」を選択します。
- 「HOST SERVERS」セクションで、ドレインモードを有効にしたいサーバーを選択し、コンテキストメニューから「Do not allow new connections(新しい接続を許可しない)」を選択します。

アクティブなリモートデスクトップセッションを持つユーザーは引き続きサーバーに再接続でき、すべての新しい接続はRD接続ブローカーによってRDSファーム内の他のホストへ自動的に振り分けられます。
change logonコマンドでドレインモードを設定する
また、コマンドプロンプトからRDSホスト上でローカルにドレインモードを設定することもできます。その際には change logon コマンドを使用します。

新しいユーザー接続を拒否するには、次のコマンドを実行します。
change logon /drain

New user logons are DISABLED, but reconnections to existing sessions are ENABLED
この状態で、新しいユーザーがRD接続ブローカーを使わずにRDSホストへ直接接続しようとすると、次のエラーが表示されます。
Remote logins are currently disabled.

同時に、RDSホストのイベントログには、ソースが TerminalServices-RemoteConnectionManager のイベントID 1070のイベントが記録されます。
A logon request was denied because the RD Session Host server is currently in drain mode and therefore not accepting new user logons. To configure the server to allow new user logons, use the Remote Desktop Services Configuration tool.
ホストを再起動するまでドレインモードを有効にしておく場合は、次のコマンドを使用します。
change logon /drainuntilrestart
アクティブなセッションを持つユーザーも含めて、すべての接続を拒否したい場合は、次のコマンドを実行します。
change logon /disable
Session logins are currently DISABLED
注意: クライアントセッションモードでRDセッションホストに接続している状態で上記のコマンドによりアクセスを無効化し、ログオフ(logoff.exe)すると、以降はコンソールセッション経由でのみサーバーに接続できるようになります(mstsc /admin)。
接続を再度許可するには、次のコマンドを使用します。
change logon /enable
RDSサーバーでドレインモードが有効になっているかどうかを確認するには、次のコマンドを実行します。
change logon /query
Session logins are currently ENABLED

GPOによる設定エラーへの対処法
change logon コマンドでドレインモードを設定しようとした際に、次のエラーが表示されることがあります。
Connections are currently ENABLED by Group Policy for this machine, unable to change.

これは、ドレインモードがグループポリシー(GPO)経由で構成されていることを意味します。該当するポリシー設定は「Allow users to connect remotely using Remote Desktop Services(リモートデスクトップサービスを使ったリモート接続をユーザーに許可する)」という名称で、以下のGPOセクションに配置されています。
管理用テンプレート → Windowsコンポーネント → リモートデスクトップサービス → リモートデスクトップセッションホスト → 接続

このポリシーを無効化するか、「未構成(Not Configured)」に設定してください。
PowerShellを使ったWindows Server RDSホストのドレインモード設定
PowerShellを使用すると、RDSホストコレクションやスタンドアロンのRDSサーバーのドレインモード設定を効率的に管理できます。
Import-Module RemoteDesktop
# RDSホストへの新規RDP接続を拒否する
Set-RDSessionHost -SessionHost mun-saprdsh1.woshub.com -NewConnectionAllowed No -ConnectionBroker mun-saprdcb.woshub.com
# 接続を許可する
Set-RDSessionHost -SessionHost mun-saprdsh1.woshub.com -NewConnectionAllowed Yes -ConnectionBroker mun-saprdcb.woshub.com
ドレインモードを有効または無効にすると、以下のレジストリパラメータの値が変更されます。
- WinStationsDisabled — HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\
- TSServerDrainMode — HKLM\System\CurrentControlSet\Control\Terminal Server\

たとえば、ドレインモードが有効な場合、レジストリ値は WinStationsDisabled = 0 および TSServerDrainMode = 2 に設定されます。
また、次のPowerShellスクリプトを使用して、ホスト上でドレインモードが有効かどうかを確認することもできます。
Get-WmiObject win32_terminalservicesetting -N "root\cimv2\terminalservices" | %{
if ($_.logons -eq 1){
"Disabled"}
Else {
switch ($_.sessionbrokerdrainmode)
{
0 {"Enabled"}
1 {"DrainUntilRestart"}
2 {"Drain"}
default {"error"}
}
}
}
PowerShellでドレインモードを有効にする方法(change logon /Drain と同等)は以下の通りです。
$temp = (Get-WmiObject win32_terminalservicesetting -N "root\cimv2\terminalservices")
$temp.sessionbrokerdrainmode=2
$temp.put()
RDSホストを通常モードに戻す場合(change logon /enable と同等)は、次のコマンドを実行します。
$temp = (Get-WmiObject win32_terminalservicesetting -N "root\cimv2\terminalservices")
$temp.sessionbrokerdrainmode=0
$temp.logons=0
$temp.put()

-
Windows XPでリモートデスクトップを設定する方法【初心者向け完全ガイド】
リモートデスクトップを使ったことがない方のために簡単に説明すると、これは別のPC(職場や自宅など)に遠隔接続し、そのマシンの前に物理的にいなくても作業を完了できる非常に便利な機能です。筆者も日常的にリモートデスクトップを活用しており、オフィスのサーバーへの接続、ユーザーのPCへのテクニカルサポート、自宅のパソコンへのファイルアクセスなどに使用しています。 リモートデスクトップ利用前の前提知識 リモートデスクトップを使用するには、いくつかの重要なポイントを理解しておく必要があります。 1. 対応OSについて まず、リモートデスクトップはWindows XPおよびWindows Server
-
【Windows Server 2016/2019】リモートデスクトップライセンスサーバーにRDS CALをインストールする方法
リモートデスクトップライセンスサーバーのインストールとアクティブ化がすでに完了している場合、次に行うのはリモートデスクトップサービスのクライアントアクセスライセンス(RDS CAL)をライセンスサーバーにインストールする作業です。この記事では、その具体的な手順をわかりやすく解説します。 Windows Server 2019 または Windows Server 2016 のRDSサーバーにRDS CALを新規インストール、あるいは追加する方法は以下の通りです。 RDS CALのインストール手順 1. リモートデスクトップライセンスマネージャーを開く サーバーマネージャーを開き、ツールメニュー