在 WINdows Server 2012 和 2012 R2 中没有域的情况下,是否可以单独通过 PowerShell 部署和管理远程桌面服务?

War*_*n P 20 windows powershell remote-desktop-services

Windows Server 2008 R2 允许在没有域的情况下部署终端服务器(远程桌面服务),并且没有任何域的坚持。这非常有用,特别是对于不需要或不希望任何 ActiveDirectory 或域功能的远程客户端远程管理的服务器的独立虚拟或云部署。

随着 Microsoft 在每个 Windows 版本中进一步限制其技术,这变得越来越困难。使用 Windows Server 2012,如果不在域中,为远程桌面服务配置许可会更加困难,但仍有可能。使用 Windows Server 2012 R2(至少在预览版中),障碍现在非常严重:

  1. Windows Server 2012 R2 中的“添加/删除角色和功能”向导具有特殊的 RDS 部署模式,该模式有一条规则,如果您不在域中,则无法部署。它告诉您首先创建或加入域。这当然与 Active Directory 域控制器不应与终端服务器机器是同一台机器这一事实直接冲突。所以微软的技术与其说是一个云操作系统,不如说是一个不需要节点集群,需要支持我真正想要部署的一台机器。这太恶心了,所以我试图找到一种解决方法。

  2. 但是,如果您跳过该向导并只选中主角色/功能向导中的复选框,您可以部署这些功能,但 UI 不存在配置它们,当您返回到角色向导上的 RDS 配置页面时,当您以本地计算机管理员身份登录时,您会收到一条消息,提示您无法管理远程桌面服务系统,因为尽管您拥有所有可能拥有的管理员权限(在基于工作组的系统中),但 RDS 配置 UI 将不接受这些凭据并让您继续。

简而言之,我的问题是,我还能以某种方式获得以下最终结果:

  • 我需要允许每个系统 10-20 个用户进行 RDS (TS) 会话。
  • 我不需要任何花哨的 RDS 选项,除非微软以某种方式依赖于这些功能的存在。我相信我需要“RDS Session Host”,因为这是“终端服务器”的核心。微软称它是“远程桌面服务客户端的完整 Windows 桌面。
  • 我需要配置许可,以便宽限期不会过期而使我的 RDS 无法运行,所以这可能意味着我需要一种配置 TS CAL 的方法。

如果以上所有这些在技术上都可以通过明智地使用 PowerShell 来完成,那么我什至准备考虑开发我需要执行上述操作的所有 PowerShell 脚本。我不是要别人为我写那个。我要问的是,除了故意破坏 Workgroup 用户的 2012 R2 UI 之外,有没有人知道我上面要做的事情是否存在技术障碍?如果我通过 PowerShell 脚本操作和控制底层技术,它们是否仍然有效?

显然,1 个词是或否的答案对任何人都没有那么有用,所以问题是真的,是或否,为什么?如果答案是肯定的,那么如何。

小智 11

我发现自己和你处于同样的情况。在独立的 Server 2012 机器上部署远程桌面非常困难,因为微软的人不允许你在无域网络上运行它,如果你这样做,你就无法管理所有设置。

因此,您可以安装基于工作组的框并让远程桌面角色在其上工作。我们还需要在同一台机器上安装远程桌面许可功能。但是,一旦此时,即使您在服务器上安装了适当的 RDS CAL,当用户登录时,也会收到试用期已开启的消息。

我终于设法让它工作了,至少像我们以前知道的古老的终端服务一样。这对我来说适用于需要 RDS 但负担不起在其网络上拥有两台服务器的小客户的两台生产机器。

开始了:

  1. 使用以下步骤安装远程桌面许可和远程桌面会话主机角色服务:

    • 打开服务器管理器
    • 单击管理并选择添加角色和功能
    • 选择基于角色或基于功能的安装
    • 在远程桌面服务下,选择远程桌面许可和远程桌面会话主机角色服务。
    • 继续安装
  2. 将许可证服务器添加到终端服务器许可证服务器组并重新启动远程桌面服务(您可以使用licmgr.exe

  3. 将许可证添加到许可证服务器。

  4. 配置远程桌面会话主机角色以使用本地远程桌面授权服务器。按着这些次序:

    • 以管理员身份打开 PowerShell
    • 在 PS 提示符下键入以下命令并按 Enter:

$obj = gwmi -namespace "Root/CIMV2/TerminalServices" Win32_TerminalServiceSetting

运行以下命令设置许可模式(注意:每个设备的值= 2,每个用户的值= 4,我们使用每个用户)

$obj.ChangeMode(4)

运行以下命令将机器名称替换为许可证服务器(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
  • 以管理员身份启动一个cmd
  • psexec -s -i regedit.exe
  • 删除所需的键
  • 重启

希望其中一些对您有用。如果您在 Powershell 和 RDS 方面取得了一些进展,请告诉我们。


Hop*_*00b 7

当我在实验室中设置环境来尝试此操作(没有域的简单 RDS 部署)时,我找到了您问题的答案,尽管这不是您想听到的答案。

[Server 2012 和 2012 R2] 中的 RDS 要求将其所有服务器添加到域中。根据 Microsoft 远程桌面虚拟化团队的一名项目经理的说法,他撰写了链接的 MSDN 博客文章“使用 Windows PowerShell 设置新的远程桌面服务部署”。

所以,很抱歉,这不是您想要的答案,但对我来说似乎非常权威。您不能为所欲为,因为 Microsoft 已决定将域成员身份作为 Server 2012 和 2012 R2 中 RDS 服务器的技术要求。