
什么是RDS以及需要哪些角色?
远程桌面服务是一组Windows Server角色,允许在服务器主机(RD会话主机)上发布完整的桌面和应用程序(RemoteApp),通过RD连接代理实现会话平衡和重新连接,并可选配RD Web Access门户网站、外部RD网关以及独立的RD许可服务(用户/设备CAL)。
最低配置(示例):
- 2× RD会话主机(会话主机)
- 1× 具有RD连接代理+RD Web访问+RD许可角色的管理员(试点项目中可将角色合并至单台服务器)
AD环境准备:
- 所有服务器加入单一域并归入组织单元。
- 创建组(例如rdsh-servers),将所有RDSH服务器加入该组。
- 为用户网络配置文件准备用户配置文件驱动器(UPD)共享目录(可选)。
通过服务器管理器安装RDS(标准部署)
打开服务器管理器,将所有服务器添加至组(所有服务器→添加服务器):

启动向导:添加功能和特性 → 安装远程桌面服务 → 标准部署 → 基于会话的部署。

按服务器分配角色(示例如下:管理员节点分配RDCB+RDWA角色,所有节点分配RDSH角色):

确认并等待可用:
安装完成后,打开服务器管理器 → 远程桌面服务 → 预览:

在「任务 → 修改部署属性」中,请指定以下内容:
- 许可证服务器和RDS CAL模式(按用户或按设备);
- RD Web访问的URL;
- (后续)为RDGW/RDWeb/发布/重定向器配置SSL证书。
对于孤立场景(无中介/网络,单一主机),请参阅“独立 RDSH”(在工作组中工作)选项。
创建会话集合并连接用户
转到远程桌面服务→集合→任务→创建会话集合:

将远程桌面会话主机添加到集合中:

指定用户组(删除域用户,添加您自己的用户,例如RDS用户),并根据需要启用用户配置文件磁盘。然后点击创建。
要修改参数,请打开集合属性(任务 → 修改属性):

RemoteApp 应用程序也发布在此处,并在此处定义会话限制(活动/断开会话的超时时间)。您将在此处找到关于超时设置的清晰说明,并配有示意图。
RDS 角色的证书和 HTTPS(概述)
为消除不安全连接警告并启用单点登录(SSO),请为以下角色分配相应的 SSL 证书:
- RD 网关、RD Web 访问、RD 发布、RD 重定向器。
通过 PowerShell 操作(示例:单 PFX 文件及中间证书 $RDSCB):
$RDSCB = "msk-rdsman.contoso.local"
$Path = "C:\certs\rds-cert.pfx"
$Pwd = ConvertTo-SecureString "StrongPfxPassword!" -AsPlainText -Force
Set-RDCertificate -Role RDGateway -ImportPath $Path -Password $Pwd -ConnectionBroker $RDSCB -Force
Set-RDCertificate -Role RDWebAccess -ImportPath $Path -Password $Pwd -ConnectionBroker $RDSCB -Force
Set-RDCertificate -Role RDPublishing -ImportPath $Path -Password $Pwd -ConnectionBroker $RDSCB -Force
Set-RDCertificate -Role RDRedirector -ImportPath $Path -Password $Pwd -ConnectionBroker $RDSCB -Force
Get-RDCertificate
通过RD Gateway(需单独购买,附有详细说明)进行的外部访问在不使用VPN的情况下更为安全。
许可证(RDS CAL)
安装“远程桌面许可”功能(可在代理服务器上操作),激活许可服务器,并在部署配置中指定该服务器的地址及许可模式(按用户/按设备)。参数设置路径为“修改部署属性”→“RD许可”。
请注意以下限制:未安装 RDS 的标准 Windows 服务器仅提供 2 个管理 RDP 连接;完整用户会话需要 RDS CAL 许可证。
应用程序部署(RemoteApp)与访问
在集合属性中部署应用程序(RemoteApp 程序 → 发布)或通过 PowerShell 部署:
New-RDRemoteApp -Alias "Chrome" -DisplayName "Google Chrome" `
-FilePath "C:\Program Files\Google\Chrome\Application\chrome.exe" `
-ShowInWebAccess 1 -CollectionName "General" -ConnectionBroker $RDSCB
用户可通过多种方式连接:
- RD Web Access(网页门户)、
- .rdp/RemoteApp 直接访问
- 或直接通过服务器群集的完全限定域名(需配置代理程序和DNS条目)。
使用 PowerShell 快速部署 RDS 服务器群集(从零开始)
以下为简化示例:创建集合、分配组、发布 RemoteApp。(可通过图形界面按前述方式部署功能,或根据规范自动化该流程)。
$RDSCB = "msk-rdsman.contoso.local"
$RDSH1 = "msk-rds1.contoso.local"
$RDSH2 = "msk-rds2.contoso.local"
# Collection
New-RDSessionCollection `
-CollectionName "General" `
-SessionHost $RDSH1,$RDSH2 `
-ConnectionBroker $RDSCB `
-CollectionDescription "General users"
# Access
$Groups = @("CONTOSO\RDS-Users","CONTOSO\ServiceDesk")
Set-RDSessionCollectionConfiguration -CollectionName "General" -UserGroup $Groups
# App publication
New-RDRemoteApp -Alias "WordPad" -DisplayName "WordPad" `
-FilePath "C:\Program Files\Windows NT\Accessories\wordpad.exe" `
-ShowInWebAccess 1 -CollectionName "General" -ConnectionBroker $RDSCB
网络、防火墙与诊断
在Windows防火墙和Windows VPS供应商的外部访问控制列表(ACL)中打开以下端口:
- RD Web:443/TCP
- RD网关:443/TCP
- 通过中介连接RDSH的RDP:3389/TCP(+ 3389/UDP以获得更佳图形效果)
- 根据您的架构,在服务器之间建立中介/SQL连接
客户端快速控制:
Test-NetConnection rds.contoso.ru -Port 443 # RDWeb/RDGW
Test-NetConnection rds.contoso.ru -Port 3389 # RDP (if you publish directly)
关于UDP RDP传输过程中的“冻结”/黑屏现象存在另一番讨论。
常见问题与快速解决方案
- 用户未被纳入集合。请确认用户是否属于正确的集合访问组(不仅限于域用户)。
- 代理不可见/重新连接错误。请检查农场DNS条目、代理数据库可用性及相关端口;若需代理高可用性,请检查SQL中的Always On状态。
- 会话无法结束/卡死。在集合的“会话”选项卡中为活动/断开会话设置时限(超时时间)。
需要安全外部访问。部署RD网关(HTTPS、访问策略、证书)。