
Чтобы удалить хост RSDH из коллекции/фермы сеансов Remote Desktop Services, можно воспользоваться графической консолью Server Manager или командой Remove-RDSessionHost Команда PowerShell.
Следующую команду PowerShell можно использовать, если нужно удалить хост RD Session из коллекции сеансов на ферме RDS:
Remove-RDSessionHost -SessionHost @("rdsh2.woshub.com") -ConnectionBroker rdcb.woshub.com –verbose
VERBOSE: The specified RD Session Host server will be removed from the session collection.
Если сервер RDSH, который вы хотите удалить, находится в автономном режиме (мертвый/неработающий хост, когда вы не можете загрузить Windows, или аппаратное обеспечение сервера повреждено), вы получите следующую ошибку при попытке удалить его из развертывания RDS:
WARNING: Unable to cleanup the RD Session Host server rdsh1.
Если вы попытаетесь удалить такой сервер с ролью Remote Desktop Services Host из развертывания RDS с помощью диспетчера серверов, вы увидите эту ошибку:
Could not remove the configuration. Object reference not set to an instance of an object.
Кроме того, вы не можете управлять фермой RDS через Server Manager, поскольку после удаления хоста RDSH из консоли вы увидите следующее предупреждение:
The following servers in this deployment are not part of the server pool: rdsh2.woshub.com The servers must be added to the server pool.
Чтобы правильно удалить сбойный хост RDS, который вы не вернете в свою ферму, необходимо удалить его метаданные из базы данных RD Connection Broker (RDCB).
Для этого подключитесь к базе данных RDCB с помощью SQL Management Studio.
- Если вы используете локальную базу данных Remote Desktop Connection Broker, основанную на Windows Internal Database (WID), используйте следующую строку подключения для подключения к экземпляру SQL:
\\.\pipe\MICROSOFT##WID\tsql\query
- Если ваша база данных RDCB работает на SQL Server или в группе SQL Server Always On High Availability Group (если вы используете роль RD Connection Broker высокой доступности), подключитесь к соответствующему приемнику SQL Server Listener (вы можете получить его с помощью команды:
Get-RDConnectionBrokerHighAvailability
)
Запустите SQL Management Studio и подключитесь к базе данных, используя учетную запись с правами локального администратора на сервере.
Разверните RDCms базы данных и найдите следующие таблицы, содержащие записи о хостах фермы RDS:
- rds.Server — полный список серверов в ферме служб удаленных рабочих столов
- rds.RoleRdsh — список серверов с ролью RD Session Host
- rds.RoleRdcb — Брокер подключений
- rds.RoleRdls — Серверы лицензий RDSr
- rds.RoleRdvh — Хосты виртуализации
- rds.RoleRdwa — Хосты веб-доступа
В нашем случае на сервере запущена только роль RDSH, а значит, достаточно удалить ее записи из списка rds.Server и rds.RoleRdsh таблицы.
Найдите в таблице ID сервера RDSH, который вы хотите удалить из развертывания RDS. В моем примере это ID 3.
Используйте следующий запрос T-SQL, чтобы удалить записи RDSH из обеих таблиц базы данных Connection Broker:
use RDCms;
delete from rds.RoleRdsh where ServerID = '3';
delete from rds.Server where Id = '3';
Закройте базу данных и перезапустите консоль Server Manager. Откройте консоль RDS, обновите конфигурацию и убедитесь, что удаленный сервер больше не отображается в списке доступных хостов RDS.
Вы также можете убедиться, что в ферме RDS нет удаленных серверов, используя эту команду:
Get-RDServer