如果要使用会话主机配置更新主机池中的会话主机,请使用会话主机更新。 会话主机更新使你能够更新基础虚拟机 (VM) 映像、大小、磁盘类型和其他配置属性。 在更新期间,将删除或解除分配现有虚拟机,并使用会话主机配置中存储的更新配置创建新的虚拟机。 此更新还使用会话主机管理策略中的值来确定应如何更新会话主机。
本文介绍如何更新主机池的会话主机配置、更新该池中的会话主机,以及如何使用Azure 门户和Azure PowerShell监视更新进度。
若要详细了解会话主机更新的工作原理,请参阅 会话主机更新。
先决条件
在使用会话主机更新更新会话主机之前,需要:
计划更新并编辑会话主机配置
计划更新时,将使用主机池的会话主机配置。 在计划更新时,需要对会话主机配置进行更改,否则会话主机将使用相同的会话主机配置值重新部署。 计划更新时所做的任何更改将保存到会话主机配置中。
若要为会话主机计划更新,请选择方案的相关选项卡,然后按照步骤作。
重要
在更新期间,将减少用户会话的可用会话主机数,并要求所有登录的用户注销。 建议在不太繁忙的时段安排更新,以尽量减少对最终用户的干扰。
下面介绍如何使用 Azure 门户为会话主机计划新的更新。
提示
使用 Azure 门户 计划更新时,将从会话主机配置填充值。 如果这是第一次更新,并且尚未创建会话主机配置,则门户会显示默认会话主机配置,直到创建会话主机配置。 更新期间对会话主机配置所做的任何更改都将保存。
如果使用 Azure 门户编辑会话主机配置,则必须计划更新。
登录 Azure 门户。
在搜索栏中,输入 Azure 虚拟桌面 并选择匹配的服务条目。
选择“ 主机池”,然后选择具有要更新的会话主机配置的主机池。
选择“ 会话主机”。
如果要在计划更新之前查看会话主机配置,请选择“ 管理会话主机配置”,然后选择“ 查看”。 查看会话主机配置后,选择“ 取消”。
若要计划新更新,请选择“ 管理会话主机更新”,然后选择“ 新建更新”。 或者,选择 “管理会话主机配置”,然后选择 “编辑”。
在“ 基本信息 ”选项卡上,完成以下信息:
参数 |
值/说明 |
在更新后启用保存原始虚拟机 |
在回滚方案中很有用,但正常成本适用于存储原始 VM 的组件。 |
当前主机池大小 (只读) |
主机池中的会话主机数。 |
在更新期间授权从主机池中删除的 VM 批大小 |
一次更新的最大会话主机数。
更新开始时,只会先更新一个会话主机(称为 初始),以验证更新过程,然后再批量更新剩余的会话主机。 如果初始更新不成功,更新将停止。 |
更新期间可用的会话主机 (只读) |
更新期间可用于用户会话的会话主机的最小数目。 |
完成此选项卡后,选择“ 下一步:会话主机”。
在“ 会话主机 ”选项卡上,可以选择性地更新会话主机配置中的以下参数:
参数 |
值/说明 |
安全类型 |
从Standard、受信任的启动虚拟机或机密虚拟机中进行选择。
- 如果选择 “受信任的启动虚拟机”,则会自动选择 安全启动 和 vTPM 选项。
- 如果选择“ 机密虚拟机”,则会自动选择 安全启动、 vTPM 和 完整性监视 选项。 使用机密 VM 时,无法选择退出 vTPM。 |
图像 |
从列表中选择要使用的 OS 映像,或选择“ 查看所有映像 ”以查看详细信息,包括创建并存储为 Azure Compute Gallery 共享映像 或 托管映像的任何自定义映像。 |
虚拟机大小 |
从列表中选择建议的 SKU。 如果要使用不同的 SKU,请选择“ 查看所有大小”,然后从列表中选择。 |
操作系统磁盘类型 |
选择要用于会话主机的磁盘类型。 建议将 高级 SSD 用于生产工作负载。
需要在所选的 VM 系列和大小上支持磁盘类型。 确保选择 Azure 计算支持的组合。 更新的会话主机的 OS 磁盘名称具有格式 SessionHostName-DateTime_Hash 的新名称。 |
要加入的域 |
|
选择要加入的目录 |
选择“ Active Directory”,然后选择包含域加入帐户用户名和密码的机密的密钥保管库。
可以选择指定域名和组织单位路径。 |
虚拟机管理员帐户 |
为更新的会话主机 VM 的本地管理员帐户选择密钥保管库和机密,完成相关参数。 用户名和密码必须满足 Azure 中 Windows VM 的要求。 |
自定义配置 |
|
自定义配置脚本 URL |
如果要在部署期间运行 PowerShell 脚本,可以在此处输入 URL。 |
查看或完成对会话主机配置的更改后,选择“ 下一步:计划”。
在“计划”选项卡上,检查“立即计划更新”框,或选择要启动更新的日期、时间和时区,最多从当前时间开始两周。
设置计划后,选择“ 下一步:通知”。
在“ 通知 ”选项卡上,完成以下信息:
参数 |
值/说明 |
用户注销前的分钟数 |
在更新开始时间之后等待用户注销的时间量。此值可在 0 到 60 分钟之间配置。 用户将在经过此时间后自动注销。 |
注销消息 |
可以指定一条消息,通知用户他们使用的会话主机即将开始更新。 |
完成此选项卡后,选择“ 下一步:查看”。
在“ 审阅 ”选项卡上,确保验证通过并查看更新期间使用的信息。
选择“ 更新 ”以计划更新。 查看会话主机列表时, “当前版本” 列显示会话主机正在使用的会话主机配置版本的时间戳。 如果“ 当前版本” 列有警告图标,则表示 “目标版本 ”列中的版本时间戳较晚,需要更新会话主机。
注意
首次计划更新时,提供的设置将覆盖 会话主机管理策略中的默认设置。 后续更新将预先填充这些参数,并保存所有更改。
下面介绍如何使用 Az.DesktopVirtualization PowerShell 模块为会话主机计划新的更新。 计划更新时,将使用主机池的会话主机配置。 在计划更新之前,需要对会话主机配置进行更改。
可以在计划更新之前更新会话主机管理策略,更改将保留供将来使用。 或者,可以在计划更新时重写会话主机管理策略中的值,但它们仅适用于该更新。
重要
在以下示例中,需要更改 <placeholder>
自己的值。
使用 PowerShell 终端类型在Azure 门户中打开 Azure Cloud Shell,或在本地设备上运行 PowerShell。
Update-AzWvdSessionHostConfiguration
使用 cmdlet 更新会话主机配置,只需指定要更改的参数。 下面是一些示例命令:
若要为会话主机指定要使用的其他自定义映像,请运行以下命令。 有关如何查找市场映像的值的信息,请参阅通过Azure PowerShell查找和使用Azure 市场 VM 映像。
$parameters = @{
HostPoolName = '<HostPoolName>'
ResourceGroupName = '<ResourceGroupName>'
ImageInfoType = 'Custom'
CustomInfoResourceID = '/subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroupName>/providers/Microsoft.Compute/galleries/<GalleryName>/images/<ImageName>/versions/<ImageVersion>'
}
Update-AzWvdSessionHostConfiguration @parameters
若要更改存储本地管理员帐户密码的密钥保管库和机密,请运行以下命令:
$parameters = @{
HostPoolName = '<HostPoolName>'
ResourceGroupName = '<ResourceGroupName>'
VMAdminCredentialsUsernameKeyVaultSecretUri = 'https://<VaultName>.vault.azure.net/secrets/<SecretName>/<Version>'
VMAdminCredentialsPasswordKeyVaultSecretUri = 'https://<VaultName>.vault.azure.net/secrets/<SecretName>/<Version>'
}
Update-AzWvdSessionHostConfiguration @parameters
若要将虚拟机大小更改为 D8s_v5 ,将 OS 磁盘类型更改为 高级 SSD,请运行以下命令。 更新的会话主机的 OS 磁盘名称具有格式 SessionHostName-DateTime_Hash
的新名称。
$parameters = @{
HostPoolName = '<HostPoolName>'
ResourceGroupName = '<ResourceGroupName>'
VMSizeId = 'Standard_D8s_v5'
DiskInfoType = 'Premium_LRS'
}
Update-AzWvdSessionHostConfiguration @parameters
运行以下命令,查看会话主机配置以验证更改:
$parameters = @{
HostPoolName = '<HostPoolName>'
ResourceGroupName = '<ResourceGroupName>'
}
Get-AzWvdSessionHostConfiguration @parameters | FL *
可选:如果要在计划更新之前更新会话主机管理策略,请使用 Update-AzWvdSessionHostManagement
cmdlet 运行以下命令。 或者,可以在计划更新时重写特定值,这些值仅用于该更新。 有关有效的时区值,请参阅 Get-TimeZone PowerShell 参考 并使用 属性中的 StandardName
值。 建议进行设置 UpdateDeleteOriginalVM = $true
,以便在更新后无需清理会话主机资源。
$parameters = @{
HostPoolName = '<HostPoolName>'
ResourceGroupName = '<ResourceGroupName>'
ScheduledDateTimeZone = '<TimeZoneID>'
UpdateDeleteOriginalVM = <$true or $false>
UpdateMaxVmsRemoved = '<Quantity>'
UpdateLogOffDelayMinute = '<Minutes>'
UpdateLogOffMessage = '<Message>'
}
Update-AzWvdSessionHostManagement @parameters
可以通过运行以下命令来查看已更新的会话主机管理策略的属性:
$parameters = @{
HostPoolName = '<HostPoolName>'
ResourceGroupName = '<ResourceGroupName>'
}
Get-AzWvdSessionHostManagement @parameters
若要计划更新,请使用 Invoke-AzWvdInitiateSessionHostUpdate
cmdlet 和以下示例。 可以计划立即开始更新,也可以指定希望更新启动的时间,最长为两周。 下面是一些示例命令:
若要计划立即启动更新并使用会话主机管理策略中的值,请运行以下命令:
$parameters = @{
HostPoolName = '<HostPoolName>'
ResourceGroupName = '<ResourceGroupName>'
}
$update = Invoke-AzWvdInitiateSessionHostUpdate @parameters
若要在指定的时间和日期 (以 YYYY-MM-DD HH:mm) 格式计划更新,并使用会话主机管理策略中的值,请运行以下命令。
$dateTime = Get-Date -Date "2024-03-15 01:30"
$parameters = @{
HostPoolName = '<HostPoolName>'
ResourceGroupName = '<ResourceGroupName>'
ScheduledDateTime = $dateTime
}
$update = Invoke-AzWvdInitiateSessionHostUpdate @parameters
若要启动计划的更新,请运行以下命令:
$parameters = @{
HostPoolName = '<HostPoolName>'
ResourceGroupName = '<ResourceGroupName>'
Action = Start
}
$update = Invoke-AzWvdInitiateSessionHostUpdate @parameters
可以通过运行以下命令来查看计划更新的属性:
$parameters = @{
HostPoolName = '<HostPoolName>'
ResourceGroupName = '<ResourceGroupName>'
}
Get-AzWvdSessionHostManagementsUpdateStatus @parameters | FL *
重要
计划更新后,无法编辑计划或设置。 如果需要进行任何更改,则需要取消更新并计划新更新。
在进行更新时,请勿从主机池中删除任何 VM。 这样做可能会导致正在进行的更新出现问题。
在进行更新时,请勿更改主机池中任何 VM 的排出模式。 VM 的排出模式会根据 VM 处于更新的哪个阶段自动更改。 如果会话主机在更新后不可恢复,则会启用其排出模式设置。 更新完成后,将重置排出模式。
会话主机更新大约需要 20 分钟。 在继续下一批之前,将同时更新批大小中指定的会话主机数。 应将总完成时间纳入计划时间。
监视更新进度
更新开始后,可以检查进度。 选择方案的相关选项卡,然后按照步骤作。
下面介绍如何使用 Azure 门户监视更新进度。
在 Azure 虚拟桌面概述中,选择“ 主机池”,然后选择为其计划更新的主机池。
选择“ 会话主机”。
蓝色横幅提供更新的状态。 它仅显示一个时间点,因此需要选择“刷新”以检查最新进度。
如果选择立即启动更新,则消息将指出更新在开始时已计划,但刷新后会更新此消息。 在更新期间,你将看到更新期间从主机池中删除的会话主机的批大小数。
下面介绍如何使用 Az.DesktopVirtualization PowerShell 模块监视更新进度。
在现有 PowerShell 会话中 Get-AzWvdSessionHostManagementsUpdateStatus
,将 cmdlet 与以下示例一起使用,以获取当前更新的详细信息。
若要查看最新更新的进度,请运行以下命令:
$parameters = @{
HostPoolName = '<HostPoolName>'
ResourceGroupName = '<ResourceGroupName>'
}
$updateProgress = Get-AzWvdSessionHostManagementsUpdateStatus @parameters |
FL PercentComplete,
ProgressExecutionStartTime,
ProgressSessionHostsCompleted,
ProgressSessionHostsInProgress,
ProgressSessionHostsRollbackFailed,
ProgressTotalSessionHost,
EndTime
$updateProgress
若要查看最新更新的所有参数,请运行以下命令:
$parameters = @{
HostPoolName = '<HostPoolName>'
ResourceGroupName = '<ResourceGroupName>'
}
$updateProgress = Get-AzWvdSessionHostManagementsUpdateStatus @parameters | FL *
$updateProgress
暂停、继续、取消或重试更新
可以暂停、恢复或取消正在进行的更新。 如果暂停或取消更新,则当前活动会在暂停更新的其余部分之前完成。 例如,如果正在更新一批会话主机,则首先完成对这些会话主机的更新。 显示更新状态的蓝色横幅将更改,以显示更新在暂停时获取的距离。 暂停更新后,只能恢复更新,从暂停时间点开始继续更新。
如果未在两周内恢复更新,则会取消更新。 取消更新后,无法恢复更新。
警告
如果在一定程度上取消更新,则主机池中的会话主机之间存在差异,例如不同的作系统版本或加入其他 Active Directory 域。 这可能会为用户提供不一致的体验,因此你需要尽快计划另一个更新,以确保所有会话主机都存在奇偶校验。
下面介绍如何使用 Azure 门户暂停、恢复、取消或重试更新。
在 Azure 虚拟桌面概述中,选择“ 主机池”,然后选择为其计划更新的主机池。
选择“ 会话主机”,然后选择“ 管理会话主机更新”。
选择“暂停”、“恢复”、“取消”或“重试”,具体取决于更新的当前状态。
选择“ 刷新 ”以更新蓝色横幅中的状态消息。 显示正确状态可能需要大约 20 秒。
下面介绍如何使用 Az.DesktopVirtualization PowerShell 模块暂停、继续、取消或重试更新。
在现有 PowerShell 会话中 Invoke-AzWvdControlSessionHostUpdate
,将 cmdlet 与以下示例一起使用来暂停或恢复当前更新。
首先,通过运行以下命令检查更新状态:
$parameters = @{
HostPoolName = '<HostPoolName>'
ResourceGroupName = '<ResourceGroupName>'
}
Get-AzWvdSessionHostManagementsUpdateStatus @parameters | FL Status
根据要执行的作,使用以下示例之一。
若要暂停更新,请运行以下命令:
$parameters = @{
HostPoolName = '<HostPoolName>'
ResourceGroupName = '<ResourceGroupName>'
Action = 'Pause'
}
Invoke-AzWvdControlSessionHostUpdate @parameters
若要恢复更新,请运行以下命令:
$parameters = @{
HostPoolName = '<HostPoolName>'
ResourceGroupName = '<ResourceGroupName>'
Action = 'Resume'
}
Invoke-AzWvdControlSessionHostUpdate @parameters
若要取消更新并包含消息,请运行以下命令:
$parameters = @{
HostPoolName = '<HostPoolName>'
ResourceGroupName = '<ResourceGroupName>'
Action = 'Cancel'
CancelMessage = '<Message>'
}
Invoke-AzWvdControlSessionHostUpdate @parameters
若要重试更新,请运行以下命令:
$parameters = @{
HostPoolName = '<HostPoolName>'
ResourceGroupName = '<ResourceGroupName>'
Action = 'Retry'
}
Invoke-AzWvdControlSessionHostUpdate @parameters
通过运行以下命令,检查执行作后的更新作和状态:
$parameters = @{
HostPoolName = '<HostPoolName>'
ResourceGroupName = '<ResourceGroupName>'
}
Get-AzWvdSessionHostManagementsUpdateStatus @parameters | FL Action, Status
后续步骤