你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
提示
本文针对使用远程桌面协议 (RDP) 提供对 Windows 桌面和应用的远程访问的服务和产品共享。
使用本文顶部的按钮选择产品以显示相关内容。
可以通过远程桌面协议 (RDP) 在本地 Windows 设备和远程会话之间配置某些 USB 外围设备的重定向。
重要
本文介绍仅使用不透明低级别重定向的 USB 设备。 特定设备类型的文章介绍了使用高级重定向的 USB 设备。 应尽可能使用高级重定向方法。
有关哪些设备类型使用哪种重定向方法的列表,请参阅 支持的资源和外围设备。 使用不透明低级别重定向重定向的外围设备需要在远程会话中安装驱动程序。
对于 Azure 虚拟桌面,必须在以下几点配置 USB 重定向。 如果未正确配置这些组件中的任何一个,USB 重定向将无法按预期工作。 可以使用Microsoft Intune或组策略来配置会话主机和本地设备。
- 会话主机
- 主机池 RDP 属性
- 本地设备
默认情况下,主机池 RDP 属性将重定向所有支持的 USB 外围设备,但你也可以指定要重定向或从重定向中排除的单个 USB 外围设备,并重定向整个设备设置类,例如多媒体外围设备。 在配置重定向设置时要小心,因为最严格的设置是结果行为。
某些 USB 外围设备可能具有使用不透明低级别 USB 重定向或高级重定向的功能。 默认情况下,这些外围设备使用高级重定向进行重定向。 也可以按照本文中的步骤强制这些外围设备使用不透明的低级 USB 重定向。
对于Windows 365,必须在云电脑和本地设备上配置 USB 重定向。 如果其中任一组件未正确配置,USB 重定向将无法按预期工作。 可以使用Microsoft Intune或组策略来配置云电脑和本地设备。 配置后,Windows 365重定向所有支持的 USB 外围设备。
对于 Microsoft Dev Box,必须在开发箱和本地设备上配置 USB 重定向。 如果其中任一组件未正确配置,USB 重定向将无法按预期工作。 可以使用Microsoft Intune或组策略来配置开发箱和本地设备。 配置后,Microsoft Dev Box 将重定向所有支持的 USB 外围设备。
提示
如果在远程会话中使用以下功能,则它们具有自己的优化,这些优化独立于会话主机、主机池 RDP 属性或本地设备上的重定向配置。
- Microsoft Teams 进行相机、麦克风和音频重定向。
- 音频、视频和呼叫重定向的多媒体重定向。
提示
如果在远程会话中使用以下功能,则它们具有独立于云电脑或本地设备上的重定向配置的自己的优化。
- Microsoft Teams 进行相机、麦克风和音频重定向。
- 音频、视频和呼叫重定向的多媒体重定向。
提示
如果在远程会话中使用以下功能,则它们具有独立于开发箱或本地设备上的重定向配置的自己的优化。
- Microsoft Teams 进行相机、麦克风和音频重定向。
- 音频、视频和呼叫重定向的多媒体重定向。
先决条件
在使用不透明低级别重定向配置 USB 重定向之前,需要:
具有会话主机的现有主机池。
分配桌面虚拟化主机池参与者内置基于角色的访问控制 (RBAC) 主机池角色的Microsoft Entra ID帐户。
- 现有的云电脑。
- 现有开发箱。
可用于测试重定向配置的 USB 设备。
若要配置Microsoft Intune,需要:
- Microsoft Entra ID分配有策略和配置文件管理器内置 RBAC 角色的帐户。
- 包含要配置的设备的组。
若要配置组策略,需要:
- 有权创建或编辑组策略对象的域帐户。
- 安全组或组织单位 (OU) ,其中包含要配置的设备。
需要从受支持的应用和平台连接到远程会话。 若要查看Windows App和远程桌面应用中的重定向支持,请参阅跨平台和设备比较Windows App功能和跨平台和设备比较远程桌面应用功能。
会话主机配置
若要使用不透明的低级别重定向为 USB 重定向配置会话主机,需要启用即插即用重定向。 可以使用 Microsoft Intune 或 组策略 执行此作。
云电脑配置
若要使用不透明低级别重定向为 USB 重定向配置云电脑,需要启用即插即用重定向。 可以使用 Microsoft Intune 或 组策略 执行此作。
开发箱配置
若要使用不透明的低级别重定向为 USB 重定向配置开发箱,需要启用即插即用重定向。 可以使用 Microsoft Intune 或 组策略 执行此作。
默认配置为:
- Windows作系统:不允许 USB 重定向。
选择方案的相关选项卡。
若要使用 Microsoft Intune 启用即插即用重定向,请执行以下作:
使用“设置”目录配置文件类型为Windows 10及更高版本的设备创建或编辑配置文件。
在设置选取器中,浏览到 管理模板>Windows 组件>远程桌面服务>远程桌面会话主机>设备和资源重定向。
选中“不允许支持即插即用设备重定向”框,然后关闭设置选取器。
展开“管理模板”类别,然后将“不允许支持即插即用设备重定向”开关切换为“已禁用”。
选择 下一步。
可选:在“ 作用域标记 ”选项卡上,选择范围标记以筛选配置文件。 有关范围标记的详细信息,请参阅对分布式 IT 使用基于角色的访问控制 (RBAC) 和范围标记。
在“ 分配 ”选项卡上,选择包含提供要配置的远程会话的计算机的组,然后选择“ 下一步”。
在“ 查看 + 创建 ”选项卡上,查看设置,然后选择“ 创建”。
策略应用于提供远程会话的计算机后,重启这些计算机,使设置生效。
本地 Windows 设备配置
若要使用不透明低级别重定向为 USB 重定向配置本地 Windows 设备,需要为用户和管理员允许 RDP 重定向其他受支持的 USB 外围设备。 可以使用 组策略 执行此作。
重要
尽管 Microsoft Intune 中提供了“允许从此计算机对其他受支持的 RemoteFX USB 设备进行 RDP 重定向”设置,但它目前无法按预期工作。 必须使用 组策略 来配置此设置。
默认配置为:
- Windows作系统:其他受支持的 USB 外围设备无法使用任何用户帐户进行 RDP 重定向。
若要使用 组策略 允许 RDP 重定向其他受支持的 USB 外围设备,请执行以下作:
在用于管理 Active Directory 域的设备上打开组策略管理控制台。
创建或编辑一个策略,该策略面向提供要配置的远程会话的计算机。
导航到“计算机配置>策略>”“管理模板>”“Windows 组件”“>远程桌面服务>”“远程桌面连接客户端>”“远程FX USB 设备重定向”。
双击策略设置 “允许从此计算机对其他受支持的 RemoteFX USB 设备进行 RDP 重定向 ”以将其打开。 选择 “已启用”
对于 RemoteFX USB 重定向访问权限的下拉列表,请选择“ 管理员和用户”,然后选择“ 确定”。
确保策略已应用于本地 Windows 设备,然后必须重启它们才能使 USB 重定向正常工作。
可选:检索要与不透明低级别重定向配合使用的特定 USB 设备实例 ID
可选:使用不透明低级别重定向发现要重定向的可用设备
对于 Azure 虚拟桌面,可以在主机池属性中输入特定的设备实例 ID,以便仅重定向你批准的外围设备。 若要检索要重定向的本地设备上的 USB 设备可用的设备实例 ID,请执行以下作:
Windows 365重定向所有支持的外围设备,以便进行连接到本地设备的不透明低级别重定向。 若要发现哪些设备,请执行以下作:
Microsoft Dev Box 会重定向所有受支持的外围设备,以便进行连接到本地设备的不透明低级别重定向。 若要发现哪些设备,请执行以下作:
在本地设备上,连接要重定向的任何设备。
从“开始”菜单打开“远程桌面连接”应用,或从命令行运行
mstsc.exe
。选择“ 显示选项”,然后选择“ 本地资源 ”选项卡。
在“ 本地设备和资源”部分中,选择“ 更多...”。
在设备和资源列表中,检查“其他支持的 RemoteFX USB 设备”框。 仅当启用本地 Windows 设备配置部分中所述的“允许从此计算机对其他受支持的 RemoteFX USB 设备进行 RDP 重定向”设置时,才会显示此选项。 可以选择 + (加) 图标以展开列表,并查看哪些设备可以使用不透明的低级别重定向进行重定向。
选择“ 确定” 关闭 “本地设备和资源”。
选择“ 常规 ”选项卡,然后选择“ 另存为...” ,
.rdp
然后保存文件。在本地设备上打开 PowerShell 提示符。
运行以下命令,将每个支持的 USB 设备名称与 USB 实例 ID 相匹配。 需要替换
<placeholder>
之前保存的文件的值.rdp
。$rdpFile = "<RDP file path>" $testPath = Test-Path $rdpFile If ($testPath) { # Function used for recursively getting all child devices of a parent device Function Lookup-Device-Children { [CmdletBinding()] Param( [Parameter(Mandatory, ValueFromPipeline)] [ValidateNotNullOrEmpty()] [object] $ChildDeviceIds ) foreach ($childDeviceId in $childDeviceIds) { $pnpDeviceProperties = Get-PnpDeviceProperty -InstanceId $childDeviceId [string]$childDevice = ($pnpDeviceProperties | ? KeyName -eq DEVPKEY_NAME).Data Write-Output " $childDevice" If ($pnpDeviceProperties.KeyName -contains "DEVPKEY_Device_Children") { $pnpChildDeviceIds = ($pnpDeviceProperties | ? KeyName -eq DEVPKEY_Device_Children).Data Lookup-Device-Children -ChildDeviceIds $pnpChildDeviceIds } } } # Get a list of the supported devices from the .rdp file and store them in an array [string]$usb = Get-Content -Path $rdpFile | Select-String USB $devices = @($usb.Replace("usbdevicestoredirect:s:","").Replace("-","").Split(";")) # Get the devices foreach ($device in $devices) { $pnpDeviceProperties = Get-PnpDeviceProperty -InstanceId $device [string]$parentDevice = ($pnpDeviceProperties | ? KeyName -eq DEVPKEY_NAME).Data Write-Output "`n-------------------`n`nParent device name: $parentDevice`nUSB device ID: $device`n" If ($pnpDeviceProperties.KeyName -contains "DEVPKEY_Device_Children") { $pnpChildDeviceIds = ($pnpDeviceProperties | ? KeyName -eq DEVPKEY_Device_Children).Data Write-Output "This parent device has the following child devices:" Lookup-Device-Children -ChildDeviceIds $pnpChildDeviceIds } } } else { Write-Output "Error: file doesn't exist. Please check the file path and try again." }
输出类似于以下示例:
------------------- Parent device name: USB Composite Device USB device ID: USB\VID_0ECB&PID_1F58\9&2E5F6FA0&0&1 This parent device has the following child devices: AKG C44-USB Microphone Headphones (AKG C44-USB Microphone) Microphone (AKG C44-USB Microphone) USB Input Device HID-compliant consumer control device HID-compliant consumer control device ------------------- Parent device name: USB Composite Device USB device ID: USB\VID_262A&PID_180A\6&22E6BE6&0&1 This parent device has the following child devices: USB Input Device HID-compliant consumer control device Klipsch R-41PM Speakers (Klipsch R-41PM) ------------------- Parent device name: USB-to-Serial Comm Port (COM30) USB device ID: USB\VID_012A&PID_0123\A&3A944CE5&0&2 ------------------- Parent device name: USB Composite Device USB device ID: USB\VID_046D&PID_0893\88A44075 This parent device has the following child devices: Logitech StreamCam Logitech StreamCam Microphone (Logitech StreamCam) Logitech StreamCam WinUSB USB Input Device HID-compliant vendor-defined device
- 记下要用于重定向的任何父设备的设备实例 ID。 只有父设备实例 ID 适用于 USB 重定向。
可选:发现与设备安装类匹配的外围设备
对于 Azure 虚拟桌面,可以在主机池属性中输入设备类 GUID,以便仅重定向与该设备类匹配的设备。 检索与本地设备上特定设备类 GUID 匹配的设备列表:
在本地设备上,打开 PowerShell 提示符。
运行以下命令,将
<device class GUID>
替换为要搜索的设备类 GUID 并列出匹配的设备。 有关设备类 GUID 值的列表,请参阅 可供供应商使用的系统定义设备设置类。$deviceClassGuid = "<device class GUID>" Get-PnpDevice | Where-Object {$_.ClassGuid -like "*$deviceClassGuid*" -and $_.InstanceId -like "USB\*" -and $_.Present -like "True"} | FT -AutoSize
例如,对多媒体设备使用设备类 GUID
4d36e96c-e325-11ce-bfc1-08002be10318
,输出类似于以下示例:Status Class FriendlyName InstanceId ------ ----- ------------ ---------- OK MEDIA USB Advanced Audio Device USB\VID_0D8C&PID_0147&MI_00\B&35486F89&0&0000 OK MEDIA AKG C44-USB Microphone USB\VID_0ECB&PID_1F58&MI_00\A&250837E1&0&0000 OK MEDIA Logitech StreamCam USB\VID_046D&PID_0893&MI_02\6&4886529&0&0002 OK MEDIA Klipsch R-41PM USB\VID_262A&PID_180A&MI_01\7&3598D0A0&0&0001
主机池配置
Azure 虚拟桌面主机池设置 USB 设备重定向 确定远程会话中支持哪些连接到本地设备的 USB 设备。 相应的 RDP 属性为 usbdevicestoredirect:s:<value>
。 有关详细信息,请参阅 支持的 RDP 属性。
若要使用主机池 RDP 属性配置 USB 重定向,请执行以下作:
登录 Azure 门户。
在搜索栏中,键入 Azure 虚拟桌面 并选择匹配的服务条目。
选择“ 主机池”,然后选择要配置的主机池。
选择 “RDP 属性”,然后选择“ 设备重定向”。
对于 USB 设备重定向,请选择下拉列表,然后选择以下选项之一:
- 重定向尚未由其他高级重定向重定向的所有 USB 设备 , (默认)
- 重定向属于指定设备安装类成员或由特定实例 ID 定义的设备的所有设备
如果选择“ 重定向属于指定设备设置类成员的所有设备或由特定实例 ID 定义的设备”,则会显示一个额外的框。 需要输入要重定向的设备的设备安装类或特定设备实例路径,用分号分隔。 有关详细信息,请参阅 控制不透明的低级 USB 重定向。 若要获取受支持设备的值,请参阅 可选:检索特定设备实例 ID;对于设备类 GUID,请参阅 可选:发现与设备安装程序类匹配的外围设备。 对于 Azure 虚拟桌面,必须使用反斜杠字符对字符
\
、:
和;
进行转义。下面是一些示例:
若要重定向仅在基于整个设备实例路径时重定向的特定外围设备, (即它连接到特定 USB 端口) ,请使用双反斜杠字符(例如
USB\\VID_045E&PID_0779\\5&21F6DCD1&0&5
)输入设备实例路径。 对于多个设备,请用分号分隔它们,例如USB\\VID_045E&PID_0779\\5&21F6DCD1&0&5;USB\\VID_0ECB&PID_1F58\\9&2E5F6FA0&0&1
。若要重定向属于特定设备设置类成员的所有外围设备, (即所有受支持的多媒体设备) ,请输入设备类 GUID,包括大括号。 例如,若要重定向所有多媒体设备,请输入
{4d36e96c-e325-11ce-bfc1-08002be10318}
。 对于多个设备类 ID,请用分号分隔它们,例如{4d36e96c-e325-11ce-bfc1-08002be10318};{6bdd1fc6-810f-11d0-bec7-08002be2092f}
。
提示
可以通过组合设备实例路径和设备类 GUID 来创建高级配置,并在 RDP 属性的“高级”选项卡上输入配置。 有关更多示例,请参阅 usbdevicestoredirect RDP 属性。
选择“保存”。 现在可以测试 USB 重定向配置。
测试 USB 重定向
配置会话主机、主机池 RDP 属性和本地设备后,可以测试 USB 重定向。 请考虑以下行为:
配置云电脑和本地设备后,可以测试 USB 重定向。 请考虑以下行为:
配置开发箱和本地设备后,可以测试 USB 重定向。 请考虑以下行为:
重定向 USB 外设的驱动程序使用与本地设备相同的进程安装在远程会话中。 确保远程会话中启用了Windows 更新,或者驱动程序可用于外围设备。
不透明低级别 USB 重定向适用于) 延迟 (< 20 毫秒的 LAN 连接;延迟较高时,某些 USB 外围设备可能无法正常工作,或者用户体验可能不适合。
USB 外围设备在重定向到远程会话时在本地设备上不可用。
USB 外围设备一次只能在一个远程会话中使用。
USB 重定向仅适用于本地 Windows 设备。
若要测试 USB 重定向,请执行以下作:
插入要在远程会话中使用的支持的 USB 外围设备。
在支持 USB 重定向的平台上,使用窗口应用或远程桌面应用连接到远程会话。 有关详细信息,请参阅跨平台和设备比较Windows App功能和跨平台和设备比较远程桌面应用功能。
检查外围设备是否已连接到远程会话。 在全屏显示的情况下,在状态栏上选择图标以选择要使用的设备。 此图标仅在正确配置 USB 重定向时显示。
选中要重定向到远程会话的每个 USB 外围设备的框,并取消选中不想重定向的外围设备的框。 一旦定向,某些设备可能在此列表中显示为 远程桌面通用 USB 设备 。
检查设备在远程会话中是否正常运行。 需要在远程会话中安装正确的驱动程序。 以下是检查 USB 外围设备在远程会话中可用的一些方法,具体取决于你在远程会话中拥有的权限:
从“开始”菜单打开远程会话中的设备管理器,或从命令行运行
devmgmt.msc
。 检查重定向的外围设备是否显示在预期的设备类别中,并且不显示任何错误。在远程会话中打开 PowerShell 提示符并运行以下命令:
Get-PnPDevice | Where-Object {$_.InstanceId -like "*TSUSB*" -and $_.Present -eq "true"} | FT -AutoSize
输出类似于以下示例。 检查“状态”列是否有显示 “错误”的任何条目。 如果有任何条目出现错误,请根据制造商的说明对设备进行故障排除。
Status Class FriendlyName InstanceId ------ ----- ------------ ---------- OK USB USB Composite Device USB\VID_0D8C&PID_0147&REV_0109\3&2DCEE32&0&TSUSB-SESSION4... OK Ports USB-to-Serial Comm Port (COM6) USB\VID_012A&PID_0123&REV_0202\3&2DCEE32&0&TSUSB-SESSION4...
重定向外围设备并正常运行后,可以像在本地设备上一样使用它们。
usbdevicestoredirect RDP 属性
usbdevicestoredirect
RDP 属性用于指定哪些 USB 设备重定向到远程会话,其语法usbdevicestoredirect:s:<value>
在使用不透明低级别重定向重定向 USB 外围设备时提供灵活性。 下表显示了 属性的有效值。 值可以单独使用,或者在用分号分隔时,这些值的组合可以相互使用,具体取决于处理顺序。 有关详细信息,请参阅 控制不透明的低级 USB 重定向。
处理顺序 | 值 | 说明 |
---|---|---|
不适用 | 未指定值 | 不要使用不透明的低级别重定向来重定向任何受支持的 USB 外围设备。 |
1 | * |
重定向所有未使用高级重定向的外围设备。 |
2 | {<DeviceClassGUID>} |
重定向属于指定设备安装类成员的所有外围设备。 有关设备类 GUID 值的列表,请参阅 可供供应商使用的系统定义设备设置类。 |
3 | <USBInstanceID> |
重定向由给定设备实例路径指定的 USB 外围设备。 |
4 | <-USBInstanceID> |
不要重定向由给定设备实例路径指定的外围设备。 |
以正确的处理顺序构造为字符串时,语法为:
usbdevicestoredirect:s:*;{<DeviceClassGUID>};<USBInstanceID>;<-USBInstanceID>`
下面是使用 RDP 属性的 usbdevicestoredirect
一些示例:
若要重定向高级别重定向不重定向的所有受支持的 USB 外围设备,请使用:
usbdevicestoredirect:s:*
若要使用设备类 GUID
{6bdd1fc6-810f-11d0-bec7-08002be2092f}
( (映像) )重定向所有受支持的 USB 外围设备,请使用:usbdevicestoredirect:s:{6bdd1fc6-810f-11d0-bec7-08002be2092f}
若要重定向高级别重定向不重定向的所有受支持的 USB 外设,以及设备类 GUID
{6bdd1fc6-810f-11d0-bec7-08002be2092f}
为 (映像) 和{4d36e96c-e325-11ce-bfc1-08002be10318}
(多媒体) 的 USB 外围设备,请使用:usbdevicestoredirect:s:*;{6bdd1fc6-810f-11d0-bec7-08002be2092f};{4d36e96c-e325-11ce-bfc1-08002be10318}
若要使用实例 ID
USB\VID_095D&PID_9208\5&23639F31&0&2
和USB\VID_045E&PID_076F\5&14D1A39&0&7
重定向支持的 USB 外围设备,请使用:usbdevicestoredirect:s:USB\VID_095D&PID_9208\5&23639F31&0&2;USB\VID_045E&PID_076F\5&14D1A39&0&7
若要重定向高级别重定向不重定向的所有受支持的 USB 外围设备(实例 ID 为 的设备
USB\VID_045E&PID_076F\5&14D1A39&0&7
除外),请使用:usbdevicestoredirect:s:*;-USB\VID_045E&PID_076F\5&14D1A39&0&7
使用以下语法来实现以下方案:
- 重定向高级别重定向不重定向的所有受支持的 USB 外围设备。
- 使用设备设置类 GUID
{6bdd1fc6-810f-11d0-bec7-08002be2092f}
( (映像) )重定向所有受支持的 USB 外围设备。 - 使用实例 ID
USB\VID_095D&PID_9208\5&23639F31&0&2
重定向支持的 USB 外围设备。 - 不要重定向实例 ID 为 的
USB\VID_045E&PID_076F\5&14D1A39&0&7
受支持的 USB 外围设备。
usbdevicestoredirect:s:*;{6bdd1fc6-810f-11d0-bec7-08002be2092f};USB\VID_095D&PID_9208\5&23639F31&0&2;-USB\VID_045E&PID_076F\5&14D1A39&0&7
提示
对于 Azure 虚拟桌面,必须使用反斜杠字符对字符 \
、 :
和 ;
进行转义。 这包括任何设备实例路径,例如 USB\\VID_045E&PID_0779\\5&21F6DCD1&0&5
。 它不会影响重定向行为。