是否可以通过PowerShell单独部署和pipe理远程桌面服务,而在Windows Server 2012和2012 R2中没有域?

Windows Server 2008 R2允许部署没有域的terminal服务器(远程桌面服务),也没有任何对域的坚持。 这非常有用,特别适用于远程pipe理远程客户端的服务器的独立虚拟或云部署,远程客户端不需要任何ActiveDirectory或域function。

随着微软在每个Windows版本中进一步限制其技术,这个问题变得越来越困难。 在Windows Server 2012中,configuration远程桌面服务的许可证在不在域上时更为困难,但仍有可能。 使用Windows Server 2012 R2(至less在预览中),现在的障碍是严重的:

  1. Windows Server 2012 R2中的“添加/删除angular色和function”向导具有特殊的RDS部署模式,该模式的规则说明您是否不在无法部署的域中。 它告诉你先创build或join一个域。 这当然与Active Directory域控制器不应该与terminal服务器机器是同一台机器的事实有直接冲突。 所以微软的技术并不像一个不需要的节点集群那么多的云操作系统,它需要支持我真正想要部署的一台机器。 这是毛病,所以我试图find一个解决方法。

  2. 但是,如果跳过该向导,只需检查主angular色/function向导中的checkbox,则可以部署这些function,但UI不在其中以configuration它们,并且在返回到angular色向导上的RDSconfiguration页,当您以本地计算机pipe理员身份login时,您会收到一条消息,说您无法pipe理远程桌面服务系统,因为尽pipe您拥有所有pipe理员权限(在基于工作组的系统中),但RDSconfigurationUI将不接受这些凭据,让你继续。

我简单的问题是,我还能不知何故,获得以下最终结果:

  • 我需要允许每个系统有10-20个用户进行RDS(TS)会话。
  • 我不需要任何花式的裤子RDS选项,除非微软以某种方式依赖于那些function。 我相信我需要“RDS会话主机”,因为这是“terminal服务器”的内核。 微软表示这是“远程桌面服务客户端的完整Windows桌面”。
  • 我需要configuration许可证,以便宽限期不会过期,导致我的RDS无法正常工作,所以这可能意味着我需要一种configurationTS CAL的方法。

如果上述所有内容都可以在技术层面上明智地使用PowerShell,那么我准备考虑开发所有需要执行上述操作的PowerShell脚本。 我不是要求别人为我写信 我问的是,有没有人知道是否有一个技术上的障碍,我想上面做什么,而不是刻意削弱2012 R2用户界面的工作组? 如果我从PowerShell脚本操作和控制它们,底层技术是否仍然可以工作?

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

    我发现自己和你一样。 在独立的Server 2012上部署远程桌面是非常困难的,因为微软的家伙不让你在无域networking上运行,如果你这样做,你不能pipe理所有的设置。

    所以,你可以安装一个基于工作组的框,并获得远程桌面angular色的工作。 我们还需要在同一台计算机上安装远程桌面授权function。 但是,一旦此时,即使您已经在服务器上安装了适当的RDS CAL,当用户login时,也会收到试用期开启的消息。

    我终于设法使其工作,至less像我们以前知道的老式terminal服务。 这对于需要RDS但是不能在其networking中安装两台服务器的小型客户机的两台生产机器来说是可行的。

    开始了:

    1. 使用以下步骤安装远程桌面授权和远程桌面会话主机angular色服务:

      • 打开服务器pipe理器
      • 点击pipe理,然后select添加angular色和function
      • select基于angular色或基于function的安装
      • 在远程桌面服务下,select远程桌面授权和远程桌面会话主机angular色服务。
      • 继续安装
    2. 将许可证服务器添加到terminal服务器许可证服务器组并重新启动远程桌面服务(您可以使用licmgr.exe

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

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

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

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

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

    $obj.ChangeMode(4)

    运行以下命令以使用许可证服务器( mylicenseserver是您的服务器的名称)replace计算机名称:

    $obj.SetSpecifiedLicenseServerList("mylicenseserver")

    运行以下命令以validation使用上述步骤configuration的设置:

    $obj.GetSpecifiedLicenseServerList()

    您应该在输出中看到服务器名称。

    完成此操作后,重新引导系统并与任何用户(如果使用工作组,您知道您的用户必须是Remote Desktop Users一部分)login并且试用期消息将消失。

    所有这些混乱的来源: http : //support.microsoft.com/kb/2833839

    使用Powershellpipe理

    您可以使用Powershellpipe理几件事情。 要查看命令,请尝试:

    import-module RemoteDesktop get-command -module RemoteDesktop

    您可以通过Powershell执行命令列表来pipe理您的盒子。 不过,我已经尝试了一些,但其中一些需要您安装一些额外的function,不能部署在我们正在讨论的场景中。

    丑陋的方式

    如果以上都不适合您,则可以将宽限期重置为最初的120天。 当然,我不build议这样做,因为用户会一直注意到这个信息。 当然,你需要购买适当的许可证。

    要重置计数器,只需删除此registry项:

    HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\Grace Period

    当然,你需要额外的权限才能做到这一点,以pipe理员的身份执行regedit将不起作用。 尝试这个:

    • 获取PSEXEC
    • 以pipe理员身份启动cmd
    • 运行psexec -s -i regedit.exe
    • 删除所需的密钥
    • 重启

    希望这对你有一些作用。 如果您使用Powershell和RDS进行一些改进,请告诉我们。

    当我在实验室里设置一个环境来尝试这个(一个简单的RDS部署没有一个域)时,我find了你的问题的答案,尽pipe这不是你想要听到的。

    [Server 2012 and 2012 R2]中的RDS要求将其所有服务器添加到域中 。 据微软公司的一位远程桌面虚拟化团队的程序经理,他写了链接的MSDN博客文章“使用Windows PowerShell设置新的远程桌面服务部署”。

    所以,对不起,这不是你想要的答案,但它看起来是相当权威的。 你不能做你想做的事情,因为微软已经决定把域成员资格作为Server 2012和2012 R2中RDS服务器的技术要求。

    在testing过程中,我发现至less有一个configuration了IPv6的NIC是很重要的。 这是RDS许可证服务器与自己对话的环回所要求的,它试图通过IPv6来解决这个问题(见Pings)。 我在两个网卡上都禁用了IPv6,导致服务器无法正常回退。