Azure虚拟桌面实战
1 项目需求
客户背景。疫情期间在家办公成为主流,我们需要设计一套AVD架构来满足客户需求。
- (1)用户分布:目前公司共有200个用户要用AVD,其中100个用户在总部北京,需要独占的远程桌面,另外100 个用户在上海及周边,需要共享型远程桌面。
- (2)网络需求:
- 公司总部(Hub)坐落于北京,需要有一个专属的网段,里面防止AD域控等需要共享的基础架构。
- 北京员工(Spoke1),一般都在北京的分公司的办公室里坐班,可以通过公司内网连接到AVD,延迟需要较小,需要独占的远程桌面。
- 上海员工(Spoke2),一般都需要在外或在家移动办公,不需要坐班,需要共享型远程桌面即可,通过Internet 连接到 AVD,同时在线人数约1/3。
由于AVD是一项公网服务,安全方面我们要有保障。
- (3)客户设备。由于用户一般都是BYOD,所以AVD的客户端需要支持各种平台(安卓,IOS,Windows)。
- (4) 应用需求。除了常规的Office 365应用外,还需要安装Notepad++,Acrobat Reader。
- (5)系统需求。所有主机都使用Windows 10 Enterprise镜像,需要是中文界面。
2 架构图
2.2 常见问题
- 北京员工需要多少台AVD Session Host?为了满足北京员工的低延迟需求,是否可以利用已存在的S2S VPN线路?
答:北京员工需要独占桌面,也就是100个VM,由于内网,考虑使用RDP Short path。
- 上海员工需要多少台AVD Session Host?
答:由于上海员工用共享型桌面,且同时在线人数为1/3,即同时在线人数约为33人,我们假定用户使用
Medium workload,我们选用D4s_v4,基于官方推荐两个user用一个CPU的情况,共需要4~5台D4s_v4 VM。
- AVD都支持什么客户端?
答:AVD默认支持各种平台的客户端拨入
- 如何为AVD安装软件?
答:在镜像中封装好软件,或者使用MSIX App Attach嫁接软件
- 在Azure China中是否已经有Windows 10 Enterprise的中文镜像包?
答:暂无,需要通过自己制作镜像达到。
3 实施
3.1 Window 10中文版多会话镜像制作(可选)
3.1.1 创建模板虚拟机
- 本文档把Azure Marketplace 的Windows 10 Multi-session 作为基础镜像,该镜像不包含Microsoft Office软件套包。
- 从Azure门户中创建Windows 10 Enterprise Multi-session 虚拟机,选择版本21H2。
通过RDP远程桌面连接到虚拟机
确保安装Windows 10的所有更新及补丁,然后重启。
我们使用了Github中提供的脚本化解决方案来帮助自动化一些常见的基线图像构建任务
在Azure Portal 中,给你的虚拟机加一个数据盘,用来存放语言包。
进入虚拟机操作系统,给新建的数据盘进行格式化,使之能够使用。
3.1.2 安装中文语言包
官方文档
windows 10 :将语言包添加到 Windows 10 多会话映像
windows 11:将语言添加到 Windows 11 企业版映像
下载Win10所需要的语言包
语言 ISO: Windows 10 语言包 ISO(版本 2004 或更高版本)
FOD 磁盘 1 ISO: Windows 10 FOD Disk 1 ISO(版本 2004 或更高版本)
收件箱应用 ISO: Windows 10 收件箱应用 ISO(版本 21H1 或更高版本)注意,你要下载语言包ISO,FOD磁盘1 ISO,以及收件箱应用ISO,三个ISO文件都得下载、
打开 ISO 文件,并装载到 VM 上
- 针对语言包 ISO 并复制 LocalExperiencePacks 和 x64\langpacks文件夹里面的**所有内容,然后将内容粘贴到数据盘路径如D:\中。
- 进入FOD ISO 文件,复制其所有内容,并将其粘贴到数据盘D:\中。
- 进入Inbox 应用 ISO 上的 amd64fre文件夹,并复制已准备好的Inbox应用的存储库中的内容
- 复制下面Powershell 脚本,在虚拟,上创建language.ps1的文件,黏贴进去,然后执行运行。运行该脚本可能需要一段时间,具体取决于需要安装的语言数量。
########################################################
## Add Languages to running Windows Image for Capture ##
########################################################
##Disable Language Pack Cleanup##
Disable-ScheduledTask -TaskPath "\Microsoft\Windows\AppxDeploymentClient\" -TaskName "Pre-staged app cleanup"
##Set Language Pack Content Stores##
[string]$LIPContent = "D:"#这里改你自己复制iso文件内容出来存放的路径,我这里存在数据盘D:\
##Chinese(PRC)##
Add-AppProvisionedPackage -Online -PackagePath $LIPContent\zh-cn\LanguageExperiencePack.zh-cn.Neutral.appx -LicensePath $LIPContent\zh-cn\License.xml
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-Client-Language-Pack_x64_zh-cn.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-Basic-zh-cn-Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-Fonts-Hans-Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-Handwriting-zh-cn-Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-OCR-zh-cn-Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-Speech-zh-cn-Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-TextToSpeech-zh-cn-Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-NetFx3-OnDemand-Package~31bf3856ad364e35~amd64~zh-cn~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-InternetExplorer-Optional-Package~31bf3856ad364e35~amd64~zh-cn~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-MSPaint-FoD-Package~31bf3856ad364e35~amd64~zh-cn~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-Notepad-FoD-Package~31bf3856ad364e35~amd64~zh-cn~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-PowerShell-ISE-FOD-Package~31bf3856ad364e35~amd64~zh-cn~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-Printing-WFS-FoD-Package~31bf3856ad364e35~amd64~zh-cn~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-StepsRecorder-Package~31bf3856ad364e35~amd64~zh-cn~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-WordPad-FoD-Package~31bf3856ad364e35~amd64~zh-cn~.cab
$LanguageList = Get-WinUserLanguageList
$LanguageList.Add("zh-cn")
Set-WinUserLanguageList $LanguageList -force
脚本运行完毕后,请转到“开始”>“设置”>“时间和语言”>“语言”,确保正确安装了语言包。 如果存在相应的语言文件,即表示一切都已设置完毕。
向 Windows 映像添加其他语言后,还需要更新收件箱应用以支持添加的语言。 使用以下 PowerShell 脚本模板自动执行此过程,并且仅更新已安装的收件箱应用版本。
#########################################
## Update Inbox Apps for Multi Language##
#########################################
##Set Inbox App Package Content Stores##
[string] $AppsContent = "F:\"
##Update installed Inbox Store Apps##
foreach ($App in (Get-AppxProvisionedPackage -Online)) {
$AppPath = $AppsContent + $App.DisplayName + '_' + $App.PublisherId
Write-Host "Handling $AppPath"
$licFile = Get-Item $AppPath*.xml
if ($licFile.Count) {
$lic = $true
$licFilePath = $licFile.FullName
} else {
$lic = $false
}
$appxFile = Get-Item $AppPath*.appx*
if ($appxFile.Count) {
$appxFilePath = $appxFile.FullName
if ($lic) {
Add-AppxProvisionedPackage -Online -PackagePath $appxFilePath -LicensePath $licFilePath
} else {
Add-AppxProvisionedPackage -Online -PackagePath $appxFilePath -skiplicense
}
}
}
3.1.3 捕获镜像
- 根据客户实际情况,安装LOB应用软件,比如Skype,腾讯会议,钉钉等等。
- 回到Azure Portal 中,删除我们下载存放语言包的那个数据盘,否则下一步会被打包在镜像里面。
- 运行Sysprep 工具,直接以管理员权限运行CMD ,系统将在大约 2 分钟后自动关闭并断开您的 RDP 会话。
C:\Windows\System32\Sysprep\sysprep.exe /oobe /generalize /shutdown
- 停止VM,以此虚拟机为模板,来创建一个镜像,在Azure Portal中, 选择虚拟机点击“捕获”。
- 验证映像,Azure Portal 中,选择刚刚创建的映像,点击创建VM。根据向导创建一台临时虚拟机。验证是否能否创建成功,语言包是否可以调整为中文,安装的软件是否正确。
3.2 AVD网络架构设计
- 基于客户需求和拓扑,我们要设计并部署一个典型的Hub-Spoke架构
3.2.1 创建虚拟网络
-
首先,创建一个Hub VNET(10.0.0.0/16),并划分好子网,包括Gateway, Bastion和AD三个子网 ,其中Gateway子网需要创建为“网关子网”才能关联虚拟网络网关。
-
创建Spoke1 VNET(10.11.0.0/16)和Spoke2 VNET(10.22.0.0/16)
-
创建Onprems VNET(192.168.0.0/24),子网删除默认的default子网,新建网关子网。
-
使用S2S VPN,将Onprems和Hub之间连通
3.2.2 创建虚拟网络网关
- 在Onprems VNET中创建一个虚拟网络网关,此步骤需要大概40分钟
这里使用两个虚拟网络网关的vpn来做模拟实验,
真实项目中其实应该onprems端创建为本地网络网关,以表示要连接到虚拟网络的本地站点。本地网络网关指定 VPN 设备的公共 IP
地址和本地站点的 IP、地址范围。稍后,在用于虚拟网络的虚拟网络网关和用于本地站点的本地网络网关之间创建一个 VPN 网关连接。
- 在Hub VNET中也创建一个虚拟网络网关,此步需要大概40分钟,注意此时两个Gateway还未建立连接。
3.2.3 配置两个网关的VPN连接
- 在两个VPN Gateway之间建立Connection,直至两端的Connection状态变为Connected。
3.2.4 Hub与Spoke1,2对等互联
-
使用对等互联,将Hub和两个Spoke之间连起来,注意要配置Gateway Transit特性,让Spoke能够利用上Hub的VPN 网关。
-
hub和spoke1,spoke2两个都要配对等互联
3.3 AD域搭建
创建AD域控服务器,并同步用户到AAD (Microsoft Entra ID)
3.3.1 创建AD域控服务器
- (1)创建并安装一台AD域控服务器,操作系统为Windows Server 2019,并且将其放在Hub中的ADSubnet,创建后不急着登录,先给虚拟机的ip设置静态。
域控的专用ip不设置静态有可能加域失败
3.3.2 配置AD与DNS服务
-
使用windows的远程桌面工具RDP登录上去。
-
在“管理员:Windows PowerShell ISE”脚本窗格中,运行以下命令禁用针对管理员的 Internet Explorer 增强安全性,更改默认浏览器为EDGE(要安装了EDGE才能用哦)不然IE老弹出来很烦人:
$adminRegEntry = 'HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A7-37EF-4b3f-8CFC-4F3A74704073}'
Set-ItemProperty -Path $AdminRegEntry -Name 'IsInstalled' -Value 0
Stop-Process -Name Explorer
$RegPath = "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice"
$EdgeProgId = "MSEdgeHTM"
# 创建注册表路径,如果不存在
if (-Not (Test-Path $RegPath)) {
New-Item -Path $RegPath -Force
}
# 设置Edge为默认浏览器
Set-ItemProperty -Path $RegPath -Name ProgId -Value $EdgeProgId
# 重复操作为https协议设置默认浏览器
$RegPath = "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\https\UserChoice"
if (-Not (Test-Path $RegPath)) {
New-Item -Path $RegPath -Force
}
Set-ItemProperty -Path $RegPath -Name ProgId -Value $EdgeProgId
# 确认设置是否成功
Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice"
Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\https\UserChoice"
-
进入操作系统,增加AD域控角色及管理工具,并创建一个新的森林。
-
安装类型一路默认,到这一步:
-
继续默认下去,到这里:
- 安装完成后,提升为域控制器。
注意:
想要本地AD同步上Azure Entra ID的用户账号,后缀的域名不是默认的xxx.onmicrosoft.com,而是和自己在本地AD设定的域名一样,必须在EntraID中添加上域名(可公网解析的,买的域名), 如果没有需要申请一个域名,配置AAD connect 之前, 需要增加该自定义域名到Azure Entra ID,步骤可参考放后文“自定义域名”一节
- 这里不用公网可解析的域名,填写自己随便自定义的域名,本例子为ashm.com
- 然后全部都是默认下去,一路猛点下一页,直到这里点安装,要等挺久的:
- 等待期间先去portal上把Hub的DNS服务器改了。改成AD域控制器的专有ip,让需要加域的机器都能指向AD控制器,Spoke1和Spoke2的虚拟网络的DNS服务器也要改。
3.3.3 创建AVD用户
- (1)创建avd1用户,和avd2用户。
3.3.4 使用AAD connect同步账号到Azure
-
打开Edge浏览器,在AD上下载AAD connect 并安装,https://www.microsoft.com/en-us/download/details.aspx?id=47594 ,安装并配置AAD Connect,运行AAD connect 向导,选择快速设置模式配置。
-
填写你的Azure账号
-
然后一路确认,配置会很久哦,配置完退出,稍等一下去portal,搜索“用户”,查看Azure的用户有没有同步上去,可能需要点时间,一分钟左右。
如果用户信息未同步,运行AAD Connect同步Powershell命令,
Start-ADSyncSyncCycle -PolicyType Delta
3.4 配置FSLogix
3.4.1 创建存储账户
- 创建用户保存用户配置文件的Azure File的存储账户,如下图。本例存储账户ashmolefslogix。
3.4.2 创建文件共享
- 由于Spoke2是一个共享主机池,所以我们要为他创建一个Azure File共享,来集中存放FSLOGIX的用户文件。
为了安全可以在这里配置只允许AVD主机池所在的网络访问,但是必须在网络勾选允许当前自己的Windows客户端的ip访问,不然后面就进不去文件共享,看不见里面的文件了,如果你访问不了文件共享的话,会需要一些时间生效。(这个图我后补的,作为示意,所以和前面创建的Vnet名称不一样)
3.4.3 Azure 文件共享启用AD域服务身份验证
你需要确保你被分配了订阅“所有者”的角色或者足够权限的角色
微软官方参考文档:为 Azure 文件共享启用 Active Directory 域服务身份验证
- 为了启用 Azure 文件共享与 Active Directory 域服务 (AD DS) 身份验证,推荐使用 AzFilesHybrid PowerShell 模块。
(1)在AD域控制器虚拟机里面,打开Edge,下载 AzFilesHybrid.zip,解压放在C盘根目录下。
下载并解压缩 AzFilesHybrid 模块的最新版本。
打开powershell ISE,建议一个一个运行,不要一下子运行整篇,有时候可能会失败(比如connect-AzAccount命令就出bug过,微软的在处理)
# 更改执行策略以允许导入 AzFilesHybrid.psm1 模块
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
# 导航到解压缩并存储 AzFilesHybrid 的位置,运行脚本以将文件复制到你的路径中
# 我就把这个模块放到了C盘的根目录下面,所以我要cd c:\一下先
cd c:\
.\CopyToPSPath.ps1
# 导入 AzFilesHybrid 模块
# 第一遍运行的时候,可能会提示失败,这个时候你要关闭Powershell,再打开一遍重新运行才能可以,会比较久
Import-Module -Name AzFilesHybrid
# 使用具有存储帐户所有者或参与者 Azure 角色分配的凭据登录 Azure。
# 一定注意,如果是Azure中国版,最后要加上 -Environment AzureChinaCloud 才可以
Update-AzConfig -EnableLoginByWam $false
Connect-AzAccount
# 定义参数,选择订阅
$SubscriptionId = "改你的订阅ID"
Select-AzSubscription -SubscriptionId $SubscriptionId
# 定义文件共享服务所属资源组名称和存储账户名称
$ResourceGroupName = "文件共享所在资源组名称"
$StorageAccountName = "文件共享所在存储账户名称"
Join-AzStorageAccount `
-ResourceGroupName $ResourceGroupName `
-StorageAccountName $StorageAccountName
# 可以运行 Debug-AzStorageAccountAuth cmdlet 对 AD 配置进行一系列基本检查
Debug-AzStorageAccountAuth -StorageAccountName $StorageAccountName -ResourceGroupName $ResourceGroupName -Verbose
-
查看文件共享这里状态是否变成已配置,然后点进去
-
验证域控是否显示存储账户,生成的object可能会跑到了Domain Controller这里。
3.4.4 设置用户对Azure 文件共享的访问权限
- 用户权限下面我们为Azure Files配置共享级别权限,AVD用户需要Azure文件共享的参与者权限,如下图进行设置。
这里的最佳实践是,在共享级别权限给予比较宽的权限,然后在NTFS上面给予较缩紧的权限。
参考文档:为 Azure文件共享分配共享级权限
完整配置状态如下
FSLogix有两种方案,一种是组策略下发统一规模配置,一种是脚本单一配置。
单一脚本配置的步骤在这:https://blog.csdn.net/m0_54833469/article/details/139538187?spm=1001.2014.3001.5501
主要在大规模环境还是组策略为主
4.4.5 使用 FSLogix 组策略模板文件下发配置
- (1)配置组策略,访问https://learn.microsoft.com/zh-cn/fslogix/how-to-install-fslogix
下载 FSLogix:https://aka.ms/fslogix_download,并解压缩。
参考文档:
- 使用 Azure 文件存储和 AD域服务FSLogix 配置文件容器:https://learn.microsoft.com/zh-cn/fslogix/how-to-use-group-policy-templates
- 使用 FSLogix 组策略模板文件:https://learn.microsoft.com/zh-cn/fslogix/how-to-use-group-policy-templates
-
(2)复制文件夹中的fslogix.admx 到AD域控上的,
C:\Windows\SYSVOL\sysvol\ashmole.com\Policies\PolicyDefinitions
目录下。
(如果没有PolicyDefinitions
目录就自己新建)
-
(3) 复制fslogix.adml 到你的 AD域控上
C:\Windows\SYSVOL\sysvol\ashmole.com\Policies\PolicyDefinitions\en-US
目录下。 -
(4) 在AD里面,新建一个新的组织单位,起名为
AVDPooled
,为将来共享主机加入,做统一策略配置。(比如在为Spoke2创建主机的时候,将他们指定加到这个OU当中)
-
(5)打开DC的组策略管理工具,为我们的AVDPooled 组织单位新建并配置一个组策略“AVDPooled”
- (6)右键新建的GPO,点击编辑,进入组策略管理编辑器,在管理模板找到FSLogix,配置Profile container,如图:
启用如下配置
- Outlook cached mode
- Enable
- Delete local profile when FSLogix Profile should apply
- VHD location(在储存账户文件共享的共享 URL可以看到,填写成:
\\ashmolefslogix.file.core.windows.net\fslogix
,存储账户名字和共享名字根据实际情况修改,注意是两条\,不要写少或者写反)
(7)然后继续编辑组策略开启如下配置
-
windows server 2016开启这些
- Virtual disk type (选择 VHDX)
- Swap directory name components
-
2019版本开启这些
在下一个 GPO 刷新周期中,虚拟机将收到这些新策略设置,并应用于本地计算机注册表配置。
可以在本地连接到计算机并执行以下命令来强制刷新策略:
GPUPDATE /Target:Computer /force
3.5 创建共享主机池
3.5.1 创建主机池
- (1)在spoke2创建一个共享主机池,供多人使用。这里算法使用广度优先,最大会话数量4
3.5.2 创建多会话虚拟主机
- 创建主机池的时候顺便创建虚拟主机
3.5.2.1 使用自定义镜像(可选)
3.5.2.2 多会话主机加入组织单位
- 可以在创建虚拟主机的时候将他们加入之前在AD建立的组织单位AVDPooled,以便之前做的组策略可以统一下发。
3.5.2.3 创建工作区
可以在创建主机池的时候一起搞定,或者创建好以后点进去主机池里面创建
3.5.3 将应用程序组分配用户
- 选择桌面应用发布给指定的用户或者组.
- 这里只演示发布共享主机池的,个人主机池同步骤
3.6 远程连接
3.6.1 客户端登录远程桌面
这里只演示登录共享主机,顺便测试FSlogix是否成功配置
-
(1)下载AVD专用的登录客户端程序并安装
RemoteDesktop_1.2.5405.0_x64 -
(2)点击订阅,使用AVD用户,比如我的是
avd2@tesavd.onmicrosoft.com
,登录AVD环境,用户密码是你创建用户时候设置的
- 第一次登录时,应该出现下方显示的FSLogix的加载图标,如果出现了,说明你的FSLogix组策略应用到了这个共享主机池。
- 用户登录后,查看文件共享里面已经自动创建了FSlogix配置文件,里面有用户的VHDX的数据,代表FSLogix成功创建。
3.6.2 Web 登录
Azure 环境 | 工作区 URL |
---|---|
Azure 云(最常见) | https://client.wvd.microsoft.com/arm/webclient/ |
Azure 云(经典) | https://client.wvd.microsoft.com/webclient/index.html |
中国版Azure世纪互联运营的 | Azure https://rdweb.wvd.azure.cn/arm/webclient/ |
3.7 发布Remote APP
在Azure门户中,选择增加应用程序组,如下图。
在应用程序页面,选择添加,应用程序源-开始菜单, 选择PowerPoint, 保存。
分配应用程序组给用户,或者用户组
其他默认,然后创建,在客户端刷新可以看见。,并且是纯原生的体验。
3.6 设备重定向
3.6.1 开启设备重定向
- 开启设备重定向,使得远程主机能够使用真实物理机的设备。
3.6.2 Teams媒体优化(可选)
如果在会话主机使用Teams,摄像头和麦克风用不了物理机的,可以通过安装Remote Desktop WebRTC Redirector来解决
安装远程桌面 WebRTC 重定向程序服务
-
以本地管理员身份登录到会话主机。
-
下载远程桌面 WebRTC 重定向程序服务安装程序。
-
打开已下载的文件,开始安装过程。
-
按提示操作。 完成后,选择“完成”。
验证媒体优化是否已加载
-
安装 WebSocket 重定向程序服务和 Teams 桌面应用后,请按照以下步骤验证是否已加载 Teams 媒体优化:
-
退出并重启 Teams 应用程序。
-
选择用户配置文件图像,然后选择“关于”。
-
选择“版本”。
-
如果已加载媒体优化,则横幅会显示已优化 Azure 虚拟桌面媒体。 如果横幅显示 Azure 虚拟桌面媒体未连接,请退出 Teams 应用,然后重试。
-
选择用户配置文件图像,然后选择“设置”。
-
如果已加载媒体优化,则将在设备菜单中枚举本地可用的音频设备和相机。 如果菜单显示“远程音频”,请退出 Teams 应用,然后重试。 如果菜单中仍未显示设备,请检查本地电脑上的“隐私设置”。 确保在“设置”>“隐私”>“应用权限—麦克风”的 设置中,将“允许应用访问你的麦克风”切换为“开启” 。 断开与远程会话的连接,然后重新连接并再次检查音频和视频设备。 若要加入视频通话和会议,还必须授予应用访问相机的权限。
如果未加载优化,请卸载并重新安装 Teams,然后再次检查。
3.9 创建个人主机池
创建步骤与共享主机池一样,只不过主机池类型选择个人。
自定义域名(参考)
想要本地AD同步上Azure Entra ID的用户账号,后缀的域名不是xxx.onmicrosoft.com,而是和自己在本地AD设定的域名一样,必须在Entra ID中添加上域名(可公网解析的,买的域名)。
如果你想添加一个域名,比如abc.com,你需要证明这个域名是你的,怎么证明呢?你在上面那个自定义域名的哪里填上点确定以后,它会跳转一个页面,如下图所示
你需要把TXT或者MX的这些信息复制,去你买域名的机构那里,如阿里云,在控制台——域名——域名列表,点击你购买的域名后面额解析,在你买的域名里面,然后把它加一个记录,如图:
然后需要些时间,回到Entra ID的自定义域名列表,等域名状态变成verify就可以用了
然后自己Entra ID上新建的用户就可以带上相应的自定义域名做后缀。
挂载NTFS
- 然后,我们配置Azure Files的NTFS权限。我们首先到Azure Files上,复制一段磁盘挂载代码。
登录到我们的DC上,使用标准权限Powershell,运行这片脚本挂载网络位:
为Azure Files 配置 Private Link
专用终结点通过 Azure Private Link 将存储账户的一部分映射到虚拟网络(VNet)中的一个专用 IP 地址,从而使得存储账户可以通过内部网络访问,因为所有流量都在 Azure Backbone 网络内部传输,不经过公共互联网,降低了潜在的安全风险。
所以首先为azure Files创建一个专业终结点
当专用终结点创建完成后,会创建出来一个专用 DNS 区域,本来是帮助当前虚拟网络内的设备能够根据存储账户专用终结点的域名解析到你的终结点内网IP的,但是你的当前的spoke虚拟网络已经把DNS指向了本地的DC域控,所以这个解析不了,你禁用存储账户公网访问以后,存储账户是直接无法访问的。
要如何才能访问,你需要在本地DNS服务器(这里是域控DC)上面,手写一个A记录,具体可以参考我http://t.csdnimg.cn/uDYBm这篇文章里的原理。
配置RDP short path
- 有 RDP Shortpath:
连接使用的是直接的 UDP 网络路径,绕过了 Azure 虚拟桌面的网关。客户端直接连接到目标虚拟机(VM),这减少了网络跳跃次数。 - 没有 RDP Shortpath:
连接通过 Azure 虚拟桌面的网关进行,通常使用的是 TCP 协议。这意味着所有流量必须通过网关进行中转,这可能会增加延迟和网络跳跃次数。
参考文档:Azure Virtual Desktop RDP Shortpath for managed networks - Azure | Microsoft Docs
- 在DC上从https://aka.ms/avdgpo下载解压包
- 把其中的
terminalserver-avd.admx
文件复制到DC上的C:\Windows\SYSVOL\sysvol\ashm.com\Policies\PolicyDefinitions\
- 把
AVDGPTemplate\en-US
里面的terminalserver-avd.adml
文件复到C:\Windows\SYSVOL\sysvol\ashm.com\Policies\PolicyDefinitions\en-US
下面。
在DC上的组策略管理器上,为共享池子创建一个GPO组策略,
对于S2S VPN的配置,在Local Network Gateway这需要注意宣告Spoke1的网段给Onprems,这样OnPrems和Spoke1 之间才能连通