在虚拟桌面的运维生命周期内,管理员除了要创建并分配虚拟桌面给相关的用户以外,还需要处理虚拟桌面的软件更新、安全更新、镜像管理等运维事项。很多时候在进行软件更新、安全补丁更新等相关运维操作时,可能会需要重新启动虚拟桌面计算机才能完成。
一般为了不影响用户的使用,很多管理员选择在夜间进行维护操作。虽然这个时间相对来说比较合适,但难免会遇到一些还在工作岗位上奋斗的小伙伴。这个时候如果突然关机对还在使用的用户影响肯定时比较大的,所以如果有一个功能可以在关机前给用户发送通知就在好不过啦。
针对上述的场景,在Azure Virtual Desktop中就给我们提供了一个很好的功能取实现这一点,我们可以在进行桌面维护之前,通过AVD提供的“通知用户”功能,向用户发送维护通知,这样就可以有效的避免因意外停机导致的用户数据丢失问题,提高用户的使用体验。
对单个用户发送通知
如果想对特定用户发送通知,可以定位到主机池,点击正在running的主机,选择要发送消息的用户,然后点击“通知用户”,输入消息标题和正文即可:
消息发送完成后,桌面会话内的用户会收到通知,这样下来在处理维护操作时对用户就会比较友,可以给用户充分的时间来保存手头的工作内容:
对主机池内所有用户会话发送通知
到这里可能会有小伙伴出来说,之前的操作只能通知一个用户,如果一个池内有100个用户,一个一个通知岂不是很耗时? 其实这时候我们可以通过脚本来实现,具体的实现方式如下。
通过这个脚本我们可以对主机池内所有的已存在会话的用户发送通知,提醒其保存相关工作。
$ResourceGroupName="ResourceGroupName"
$HostPoolName="HostPoolName"
$HSessionHosts = (Get-AzWvdSessionHost -ResourceGroupName $ResourceGroupName -HostPoolName $HostPoolName | Where-object -Property AllowNewSession -eq $true).Name
foreach ($HSessionHost in $HSessionHosts) {
$HSessionDetail = $HSessionHost.split("/")
$HSessionIDs = (Get-AzWvdUserSession -ResourceGroupName $ResourceGroupName -HostPoolName $HostPoolName -SessionHostName $HSessionDetail[1]).name
if ($HSessionIDs -ne $null)
{
foreach ($HSessionID in $HSessionIDs)
{
if ($HSessionID -ne $null)
{
$SplitHSessionID = $HSessionID.split("/").split("/")
Send-AzWvdUserSessionMessage -ResourceGroupName $ResourceGroupName -HostPoolName $SplitHSessionID[0] -SessionHostName $SplitHSessionID[1] -UserSessionId $SplitHSessionID[2] -MessageBody '系统将在20:00 PM关机,如需使用请在关机后重新连线' -MessageTitle '注意'
}
}
}
}