我有一个有多个networking接口的服务器,我需要RDP来监听其中的一个连接。 服务器不是远程桌面服务器,RDP仅用于远程pipe理 。
在Windows Server 2008 R2中,我可以使用Remote Desktop Session Host控制台进行configuration; 在Windows Server 2012中,该控制台不存在了。
我如何在WS2012中configuration?
远程桌面服务实际上有一个相当丰富的WMI对象库,您可以利用它来查询和操作configuration。 从Vista / 2008开始,它位于root \ cimv2 \ TerminalServices命名空间中。 以下是浏览可用内容的好地方: 远程桌面服务configuration类
关于你的具体问题,我只想澄清,RDP只能绑定到networking适配器,而不是特定的IP。 我知道你说的“networking接口”。 我只是想澄清其他谁可能会绊倒这个问题。 对于只有一个适配器和多个IP的机器,这是一个比较常见的要求。 如果这就是你正在寻找的,还有其他的ServerFault问题的答案更详细。 但是如果我记得正确的话,最好的办法就是使用内置的防火墙来限制连接。
具有你所需要的具体类叫做Win32_TSNetworkAdapterSetting 。 有三种与您可以使用的类关联的方法:
根据我的经验,由于“所有networking适配器”选项, SetNetworkAdapterLanaID比SelectNetworkAdapterIP更可靠。 看起来,如果当前configuration为“所有networking适配器”,它将不会更改为您指定的IP的特定适配器,而只会保留在“所有networking适配器”上,这在技术上仍然是正确的。
所以你只剩下使用SetNetworkAdapterLanaID ,它需要一个整数ID值作为方法的参数。 所以这里是你如何find使用的ID。 首先得到一个类的实例的参考。 我的例子在这里将使用默认的terminal名称“RDP-Tcp”,但它可能(尽pipe不太可能)您的系统有额外的或不同的terminal名称。
您可以检查使用以下PowerShellconfiguration的networking适配器的当前状态:
gwmi Win32_TSNetworkAdapterSetting -filter "TerminalName='RDP-Tcp'" -namespace "root/cimv2/TerminalServices" | Select NetworkAdapterLanaID,NetworkAdapterName
为了调用一个方法,把类的实例分配给一个variables是很好的,所以让我们这样做:
$ts = gwmi Win32_TSNetworkAdapterSetting -filter "TerminalName='RDP-Tcp'" -namespace "root/cimv2/TerminalServices"
这个类的一个方便function是它返回的一些属性是可以使用的可能的networking适配器的列表。
$ts | select -expand DeviceIDList $ts | select -expand NetworkAdapterList
这应该返回两个列表。 第一个是基于0的ID列表,第二个是与第一个列表关联的适配器的友好名称。 所以在我的testing机器上,它返回:
0 1
和
All network adapters configured with this protocol Intel(R) PRO/1000 MT Network Connection
默认情况下,它被设置为ID 0,即“所有使用此协议configuration的networking适配器”。 因此,如果我们想要将其更改为明确使用Intel NIC,则只需使用我们现有的对象和关联的ID调用该方法即可。
$ts.SetNetworkAdapterLanaID(1)
然后,您可以通过重新查询对象来validation更改:
gwmi Win32_TSNetworkAdapterSetting -filter "TerminalName='RDP-Tcp'" -namespace "root/cimv2/TerminalServices" | Select NetworkAdapterLanaID,NetworkAdapterName
据我所知, Remote Desktop Session Host已不再存在于Windows Server 2012中。
您可以在Server Manager --> Server Rolefind它的一些configuration
运行regedit
search键+仅匹配整个string:terminal服务器
get lanatable. example: {564D81F9-15B4-42EC-9019-534A56DBEB81} {B5A5F6CC-5DFD-43F7-B5B0-20490A58A2EB} note LanaId for each of them set HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Terminal Server\Winstations\RDP-tcp\LanAdapter HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Terminal Server\Winstations\RDP-tcp\LanAdapter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Winstations\RDP-tcp\LanAdapter to LandaID you want accept remote desktop connection