Windows Server 2008 R2 允许在没有域的情况下部署终端服务器(远程桌面服务),并且对域没有任何要求。这非常有用,特别是对于不需要或不希望任何 ActiveDirectory 或域功能的远程客户端远程管理的服务器的独立虚拟或云部署。
随着微软在每个 Windows 版本中越来越多地限制其技术,这变得越来越困难。使用 Windows Server 2012,为远程桌面服务配置许可在不在域中时更加困难,但仍然可以。对于 Windows Server 2012 R2(至少在预览版中),障碍现在很严重:
Windows Server 2012 R2 中的“添加/删除角色和功能”向导有一个特殊的 RDS 部署模式,该模式有一个规则,即如果您不在无法部署的域中。它告诉您首先创建或加入域。这当然与 Active Directory 域控制器不应与终端服务器机器是同一台机器这一事实直接冲突。所以微软的技术与其说是一个云操作系统,不如说是一个不需要的节点集群,需要支持我真正想要部署的一台机器。这很恶心,所以我试图找到一种解决方法。
但是,如果您跳过该向导并仅选中主角色/功能向导中的复选框,则可以部署功能,但 UI 无法配置它们,当您返回角色向导上的 RDS 配置页面时,当您以本地计算机管理员身份登录时,您会收到一条消息说您无法管理远程桌面服务系统,因为尽管您拥有所有可能拥有的管理员权限(在基于工作组的系统中),但 RDS 配置 UI 将不接受这些凭据,让您继续。
我的问题是,我还能以某种方式获得以下最终结果:
- 我需要每个系统允许 10-20 个用户进行 RDS (TS) 会话。
- 我不需要任何花哨的 RDS 选项,除非微软以某种方式依赖于这些功能。我相信我需要“RDS 会话主机”,因为这是“终端服务器”的核心。微软称它是“远程桌面服务客户端的完整 Windows 桌面。
- 我需要配置许可,以便宽限期不会过期而使我的 RDS 无法运行,因此这可能意味着我需要一种配置 TS CAL 的方法。
如果以上所有这些在技术上都可以通过明智地使用 PowerShell 来完成,那么我什至准备考虑开发执行上述操作所需的所有 PowerShell 脚本。我不是要别人为我写那个。我要问的是,除了故意破坏工作组用户的 2012 R2 UI 之外,是否有人知道我想要在上面做的事情是否存在技术障碍?如果我从 PowerShell 脚本操作和控制底层技术,它们是否仍然有效?
显然,一个单词是或否的答案对任何人都没有多大用处,所以问题是真的,是或否,为什么?如果答案是肯定的,那么如何。
我发现自己和你一样。在独立的 Server 2012 机器上部署远程桌面非常困难,因为 Microsoft 的人不允许您在无域网络上运行它,如果这样做,您将无法管理所有设置。
因此,您可以安装基于工作组的框并让远程桌面角色在其上工作。我们还需要在同一台机器上安装远程桌面许可功能。但是,一旦此时,即使您在服务器上安装了正确的 RDS CAL,当用户登录时,也会收到试用期开启的消息。
我终于设法让它工作了,至少像我们以前知道的老式终端服务一样。这适用于需要 RDS 但无法在其网络上拥有两台服务器的小型客户的两台生产机器上。
开始了:
使用以下步骤安装远程桌面许可和远程桌面会话主机角色服务:
将 License Server 添加到 Terminal Server License Servers 组并重启远程桌面服务(可以使用
licmgr.exe
)将许可证添加到许可证服务器。
配置远程桌面会话主机角色以使用本地远程桌面授权服务器。按着这些次序:
$obj = gwmi -namespace "Root/CIMV2/TerminalServices" Win32_TerminalServiceSetting
运行以下命令设置许可模式(注意:Value = 2 for Per device,Value = 4 for Per User,我们使用per-user)
$obj.ChangeMode(4)
运行以下命令将机器名称替换为 License Server(
mylicenseserver
是您的服务器的名称):$obj.SetSpecifiedLicenseServerList("mylicenseserver")
运行以下命令以验证使用上述步骤配置的设置:
$obj.GetSpecifiedLicenseServerList()
您应该在输出中看到服务器名称。
完成此操作后,重新启动系统并使用任何用户登录(如果使用工作组,您知道您的用户必须是其中的一部分
Remote Desktop Users
)并且试用期消息将消失。所有这些混乱的来源:http: //support.microsoft.com/kb/2833839
管理与
Powershell
有一些事情你可以管理
Powershell
。要查看命令,请尝试:import-module RemoteDesktop get-command -module RemoteDesktop
您可以通过 Powershell 执行一系列命令来管理您的机器。但是,我尝试了一些,但其中一些要求您安装一些额外的功能,这些功能无法部署在我们正在讨论的场景中。
丑陋的方式
如果上述方法都不适合您,有一种方法可以将宽限期重置为最初的 120 天。当然,我不建议这样做,因为用户会一直注意到该消息。当然,您需要购买适当的许可证。
要重置计数器,只需删除此注册表项:
HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\Grace Period
当然,您需要额外的权限才能做到这一点,
regedit
以管理员身份执行将不起作用。尝试这个:psexec -s -i regedit.exe
希望其中一些对您有用。如果您在 Powershell 和 RDS 方面取得了一些进展,请告诉我们。
当我在实验室中设置环境以尝试此操作(没有域的简单 RDS 部署)时,我找到了您问题的答案,尽管这不是您想听到的答案。
[Server 2012 and 2012 R2] 中的 RDS 要求将其所有服务器添加到域中。据微软远程桌面虚拟化团队的一位项目经理说,他撰写了链接的 MSDN 博客文章,使用 Windows PowerShell 设置新的远程桌面服务部署。
所以,很抱歉这不是你想要的答案,但它对我来说似乎很权威。您无法为所欲为,因为 Microsoft 已决定将域成员身份作为 Server 2012 和 2012 R2 中 RDS 服务器的技术要求。
我在测试过程中确实发现,至少配置 1 个启用 IPv6 的 NIC 很重要。这是因为环回需要 RDS 许可证服务器与它自己对话,它试图通过 IPv6 解析来执行此操作(如 Pings 中所示)。我在两个 NIC 上都禁用了 IPv6,这导致服务器无法正确环回。