Puedes usar Modo de drenaje RDS para mantener hosts de terminal en una granja de servicios de escritorio remoto. Si habilita el modo de drenaje para su servidor RDS, puede evitar que el servidor acepte conexiones RDP de nuevos usuarios, y las conexiones RD actuales permanecerán activas hasta que los usuarios cierren la sesión manual o automáticamente antes del tiempo de espera de la sesión RDS. Entonces podrá mantener su host de Windows Server sin interrumpir el funcionamiento de su granja de RDS (instalar actualizaciones, cambiar la configuración del servidor o de la aplicación, actualizar los archivos de configuración, etc.).
¿Qué son los modos de drenaje en los servicios de escritorio remoto de Windows Server?
El modo de drenaje apareció en Windows Server 2008 (modo de drenaje del servidor de Terminal Services). Cuando coloca un host RDS en modo de drenaje, ya no puede aceptar conexiones de nuevos usuarios. Como regla general, el modo se usa cuando un administrador de servidor necesita mantener un servidor (instalar actualizaciones de Windows, configurar o actualizar aplicaciones) sin afectar la disponibilidad de toda la granja de RDS. Un host RDS puede funcionar en cualquiera de los tres tipos de modo de drenaje:
- Permitir todas las conexiones (un modo predeterminado): un host de sesión de RD acepta nuevas conexiones;
- Permitir reconexiones, pero evitar nuevos inicios de sesión – los usuarios pueden volver a conectarse a sesiones existentes, pero no se permiten nuevas sesiones. Si reinicia un servidor, los usuarios no podrán conectarse a él;
- Permitir reconexiones, pero evitar nuevos inicios de sesión hasta que se reinicie el servidor – este modo es similar al anterior, pero después del reinicio, el modo de inicio de sesión del usuario se restablece a Permitir todas las conexiones.
¿Cómo denegar los inicios de sesión de un nuevo usuario en un servidor de sesión de Escritorio remoto?
Puede habilitar el modo de drenaje en su servidor host RDS a través de la configuración de recopilación de RDS.
- Abra el Administrador de servidores -> Todos los servidores -> y agregue todos los servidores RDS de la granja;
- Seleccione Servicios de escritorio remoto en el panel izquierdo del Administrador del servidor. Seleccione las colecciones de RDS;
- En el
HOST SERVERSsección, seleccione un servidor para el que desea habilitar el modo de drenaje y seleccione No permita nuevas conexiones en el menú contextual.
no permiten nuevas conexiones» width=»638″ height=»465″ />
Los usuarios que tengan sesiones de Escritorio remoto activas podrán volver a conectarse al servidor, mientras que el Agente de conexión reenviará todas las conexiones nuevas a otros hosts de su granja de RDS.
También puede configurar el modo de drenaje localmente en el host RDS a través del símbolo del sistema. Para hacerlo, el change logon se utiliza el comando.
Para evitar nuevas conexiones de usuarios, ejecute el siguiente comando:
change logon /drain

New user logons are DISABLED, but reconnections to existing sessions are ENABLED
Ahora, si un nuevo usuario intenta conectarse al host RDS directamente (cuando no se usa el Agente de conexión RD), aparece el siguiente error:
Remote logins are currently disabled.

Al mismo tiempo, aparece un evento con el ID de evento 1070 y TerminalServices-RemoteConnectionManager como origen en el registro del host RDS:
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.
El siguiente comando habilita el modo de drenaje hasta que se reinicia el host:
change logon /drainuntilrestart
Para evitar que los usuarios, incluso con sesiones activas, se conecten al host, ejecute este comando:
change logon /disable
Session logins are currently DISABLED
mstsc /admin).
Para permitir conexiones, use este comando:
change logon /enable
Para asegurarse de que el modo de drenaje esté habilitado en su servidor RDS, ejecute el siguiente comando:change logon /query
Session logins are currently ENABLED

Si intentó configurar el modo de drenaje en su servidor usando change logon y vea el siguiente error:
Connections are currently ENABLED by Group Policy for this machine, unable to change.

Esto significa que el modo de drenaje se configura a través del GPO. La configuración de política se llama Permitir que los usuarios se conecten de forma remota mediante los servicios de escritorio remoto y puede encontrarlo en la siguiente sección de GPO: Plantillas administrativas -> Componentes de Windows -> Servicios de escritorio remoto -> Host de sesión de escritorio remoto -> Conexiones.

Desactive la política o establézcala en No configurado.
Establecer el modo de drenaje para el host RDS de Windows Server a través de PowerShell
Puede administrar la configuración del modo de drenaje de una colección de host RDS o un servidor RDS independiente mediante PowerShell:
Import-Module RemoteDesktop
# To deny new RDP connections to the Remote Desktop Services Host
Set-RDSessionHost -SessionHost mun-saprdsh1.woshub.com -NewConnectionAllowed No -ConnectionBroker mun-saprdcb.woshub.com# To allow connections
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

Por ejemplo, cuando el modo de drenaje está habilitado, los valores de registro se establecen en WinStationsDisabled = 0 y TSServerDrainMode = 2.
También puede asegurarse de que el modo de drenaje en su host esté habilitado mediante el siguiente script de PowerShell:
Get-WmiObject win32_terminalservicesetting -N "rootcimv2terminalservices" | %{
if ($_.logons -eq 1){
"Disabled"}
Else {
switch ($_.sessionbrokerdrainmode)
{
0 {"Enabled"}
1 {"DrainUntilRestart"}
2 {"Drain"}
default {"error"}
}
}
}
Para habilitar el modo de drenaje a través de PowerShell (similar a change logon /Drain):
$temp = (Get-WmiObject win32_terminalservicesetting -N "rootcimv2terminalservices")
$temp.sessionbrokerdrainmode=2
$temp.put()
Para poner el host RDS en modo normal (change logon /enable), ejecute este comando:
$temp = (Get-WmiObject win32_terminalservicesetting -N " rootcimv2terminalservices ")
$temp.sessionbrokerdrainmode=0
$temp.logons=0
$temp.put()





