接続ブローカーやセッションホストといったRDS構成を構築した時に、セッションホストに対しリモートデスクトップもしくはRemoteAppの新規接続を止める方法が無いと、セッションホストのメンテナンスが出来ません。
セッションホストにリモートデスクトップもしくはRemoteAppの新規接続をさせないような受付停止をする方法はないのでしょうか?
レジュメ
環境・前提条件
- Windows sevrer 2016
で確認しました。
結論、セッションホスト上で「chglogon」もしくは「change logon」コマンドを実行する
リモートデスクトップもしくはRemoteAppの新規受付を停止するコマンドがありました。
また、オプションによって微妙に状態を変えることができます。
- /DISABLE セッションからユーザー ログインを無効にします。
- /DRAIN 新規ユーザーのログオンを無効にします。ただし、既存セッションへの再接続は許可されます。
- /DRAINUNTILRESTART サーバーが再起動されるまで新規ユーザーのログオンを無効にします。ただし、既存セッションへの再接続は許可されます。
リモートデスクトップ環境を構築する時には、運用用にこのコマンドを覚えておいた方がよいですね。
「chglogon /DISABLE」はセッションホストを再起動すると有効に戻ります
「chglogon /DISABLE」を実行した場合、セッションからユーザー ログインを無効にします。
これは「chglogon /EABLE」コマンドに実行により、セッションからユーザー ログインを有効に戻せますが、
セッションホストのOS再起動をすることによっても、EABLEと同じようよにセッションからユーザー ログインを有効に戻せます。
逆に/DRAINはOS再起動しても無効のままで変わりません。
DISABLEオプションとDRAINオプションは何が違うのか?
DISABLEオプションとDRAINオプションで何が異なるのかというと、そのサーバーに対してユーザーセッションが残っている(「切断」ステータスだろうが)場合の挙動が違います。
DISABLEは、そのDISABLEしたサーバーから一度でもユーザーが切断してしまうと次回接続した時にアクセスが拒否されます。
ユーザーは、ユーザーセッションが残っている限り同じ(DISABLESされた)セッションホストに接続を試みますが、ユーザーセッションが切れるまで拒否され続けます。
ユーザーセッションが無くなって(またはログオフ)されて初めて別のセッションホストに接続できます。
一方、DRAINは、そのDRAINしたサーバーにユーザーセッションが残ってるユーザーの場合(「切断」ステータスでもセッションが残っている限り)DRAINしたセッションホストに再度接続できます。
ユーザーセッションが無くなって(またはログオフ)されて初めて別のセッションホストに接続できます。
接続ブローカーがいる構成ではSet-RDSessionHostコマンドレット(PowerShell)
接続ブローカーがいる環境では、セッションホストサーバーでchglogonを実施しても、接続ブローカーがそのセッションホストに接続を割り振ってしまうことがあります。
RDS環境では、Set-RDSessionHostコマンドレットを使って、セッションホストへ新規接続を防ぎます。
Set-RDSessionHost -SessionHost <セッションホストFQDN> -NewConnectionAllowed <Yes,NotUntilReboot,No,> -ConnectionBroker <接続ブローカーFQDN>
NewConnectionAllowedオプションを指定し、新規接続を許すかどうか設定します。
- Yes・・・新規接続許可(chglogon /enable)
- NotUntilReboot ・・・再起動するまで新規接続不可(chglogon /DRAINUNTILRESTART )
- No・・・再起動しても新規接続不可(chglogon /DRAIN)
/dieableに相当するオプションは残念ながらありません。
実行には、セッションホストと接続ブローカーに対し設定が出来る権限があるドメインユーザーで実施する必要があります。
Get-RDSessionHostコマンドレット(PowerShell)でセッションホストの NewConnectionAllowed 状態を確認できる
Get-RDSessionHost <RDSコレクション名>
上記コマンドレットを実施すると、RDSコレクションにぶら下がっているすべてのセッションホストの接続受付状態(NewConnectionAllowed)が確認できます。
GUIでは接続ブローカーのサーバーマネージャーで見れる接続情報と同等です。
参考:Set-RDSessionHost