我有一台具有多个网络接口的服务器,我需要 RDP 仅监听其中一个接口上的连接;该服务器不是远程桌面服务器,RDP 仅用于远程管理。
在 Windows Server 2008 R2 中,我能够使用控制台进行配置Remote Desktop Session Host
;在 Windows Server 2012 中,该控制台不再存在。
我如何在 WS2012 中配置它?
答案1
远程桌面服务实际上有一个非常丰富的 WMI 对象库,您可以利用它查询和操作配置。从 Vista/2008 开始,它位于根\cimv2\终端服务命名空间。下面是开始浏览可用内容的好地方:远程桌面服务配置类
关于您的具体问题,我只想澄清一下,RDP 只能绑定到网络适配器,而不是特定 IP。我知道您说的是“网络接口”。我只是想为可能偶然发现这个问题的其他人澄清一下。对于只有一个适配器和多个 IP 的机器来说,这是一个相当常见的请求。如果这就是您要找的,还有其他 ServerFault 问题,答案更详细。但如果我没记错的话,最好的办法是使用内置防火墙限制连接。
满足你需求的特定类叫做Win32_TSNetworkAdapter 设置。您可以使用 3 种与该类相关的方法:
在我的经验中,设置网络适配器LanaID比更可靠选择网络适配器IP因为有“所有网络适配器”选项。如果当前配置为“所有网络适配器”,它似乎不会更改为具有您指定的 IP 的特定适配器,它只会将其保留在“所有网络适配器”上,这在技术上仍然是正确的。
所以你只能使用设置网络适配器LanaID并且需要一个整数 ID 值作为方法的参数。下面介绍如何找到要使用的 ID。首先获取对类实例的引用。此处的示例将使用名为“RDP-Tcp”的默认终端名称,但您的系统可能(尽管可能性不大)有其他或不同的终端名称。
您可以使用以下 PowerShell 检查网络适配器配置的当前状态:
gwmi Win32_TSNetworkAdapterSetting -filter "TerminalName='RDP-Tcp'" -namespace "root/cimv2/TerminalServices" | Select NetworkAdapterLanaID,NetworkAdapterName
为了调用一个方法,最好将类的实例分配给一个变量,所以让我们这样做:
$ts = gwmi Win32_TSNetworkAdapterSetting -filter "TerminalName='RDP-Tcp'" -namespace "root/cimv2/TerminalServices"
此类的一个方便特性是,它返回的几个属性是您可以使用的可能的网络适配器的列表。
$ts | select -expand DeviceIDList
$ts | select -expand NetworkAdapterList
这应该返回两个列表。第一个是基于 0 的 ID 列表,第二个是与第一个列表关联的适配器的友好名称。因此在我的测试机器上,它返回:
0
1
和
All network adapters configured with this protocol
Intel(R) PRO/1000 MT Network Connection
如果您想要将属性中的 IDDeviceID
与中的名称关联起来NetworkAdapterList
,您可以这样做:
$adapters = $ts | select -expand NetworkAdapterList
$device_ids = $ts | select -expand DeviceIDList
$adapter_list = @()
foreach ($device_id in $device_ids) {
$adapter_list += @{$device_id = $adapters[$device_id]}
}
$adapter_list # Mapping of device IDs to adapter names
默认情况下,它设置为使用 ID 0,即“所有使用此协议配置的网络适配器”。因此,如果我们想将其更改为明确使用 Intel NIC,我们只需使用现有对象和相关 ID 调用该方法即可。
$ts.SetNetworkAdapterLanaID(1)
然后您可以通过重新查询对象来验证更改:
gwmi Win32_TSNetworkAdapterSetting -filter "TerminalName='RDP-Tcp'" -namespace "root/cimv2/TerminalServices" | Select NetworkAdapterLanaID,NetworkAdapterName
答案2
运行注册表编辑器
搜索键+仅匹配整个字符串:终端服务器
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
答案3
据我所知,Remote Desktop Session Host
Windows Server 2012 中不再存在。
你可以在以下位置找到它的一些配置Server Manager --> Server Role