當您想要使用階段作業主機組態更新主機集區中的階段作業主機時,請使用階段作業主機更新。 工作階段主機更新可讓您更新基礎虛擬機器 (虛擬機器) 映像、大小、磁碟類型和其他組態內容。 在更新期間,會刪除或取消配置現有的虛擬機器,並使用儲存在工作階段主機組態中的更新組態來建立新虛擬機器。 此更新也會使用工作階段主機管理原則中的值來決定工作階段主機的更新方式。
本文說明如何更新主機集區的工作階段主機設定、更新該集區中的工作階段主機,以及如何使用 Azure 入口網站 和 Azure PowerShell 監視更新進度。
若要深入瞭解工作階段主機更新的運作方式,請參閱 工作階段主機更新。
必要條件
在使用工作階段主機更新更新工作階段主機之前,您需要:
排程更新並編輯工作階段主機組態
當您排程更新時,會使用主機集區的工作階段主機組態。 排程更新時,您必須變更階段作業主機配置,否則會使用相同的階段作業主機配置值重新部署階段作業主機。 您在排程更新時所做的任何變更都會儲存至工作階段主機組態。
若要排程工作階段主機的更新,請選取案例的相關索引標籤,然後依照步驟操作。
重要事項
在更新期間,使用者工作階段的可用工作階段主機數目會減少,並要求任何登入的使用者登出。 我們建議您在不太繁忙的時段排程更新,以盡量減少對最終使用者的干擾。
以下是如何使用 Azure 入口網站 排程會話主機的新更新。
提示
當您使用 Azure 入口網站 排程更新時,會從工作階段主機設定填入值。 如果這是第一次更新,且尚未建立工作階段主機設定,入口網站會顯示預設工作階段主機設定,直到建立工作階段主機設定為止。 您在更新期間對工作階段主機組態所做的任何變更都會被儲存。
如果您使用 Azure 入口網站 編輯工作階段主機設定,則必須排程更新。
登入 Azure 入口網站。
在搜尋列中,輸入 Azure 虛擬桌面 ,然後選取相符的服務專案。
選取 主機集區,然後選取具有您要更新之工作階段主機組態的主機集區。
選取 [工作階段主機]。
如果您想要在排程更新之前檢閱工作階段主機組態,請選取 [管理工作階段主機組態],然後選取 [ 檢視]。 檢閱工作階段主機組態之後,請選取 [取消]。
若要排程新的更新,請選取 [管理工作階段主機更新],然後選取 [ 新增更新]。 或者,選取 [管理工作階段主機設定],然後選取 [編輯]。
在 基本 索引標籤上,完成下列資訊:
| 參數 |
值/描述 |
| 目前主機集區大小 (唯讀) |
主機集區中的工作階段主機數目。 |
| 在更新期間授權從主機集區移除的 VM 批次大小 |
一次更新的工作階段主機數目上限。
更新開始時,只會先更新一個工作階段主機 ( 稱為初始) ,以驗證更新程序,然後再批次更新其餘的工作階段主機。 如果初始更新不成功,更新就會停止。 |
| 更新期間可用的工作階段主機 (唯讀) |
更新期間可供使用者工作階段使用的階段作業主機數目下限。 |
完成此索引標籤之後,請選取 [下一步:工作階段主機]。
在 [工作階段主機 ] 索引標籤上,您可以選擇性地更新工作階段主機組態中的下列參數:
| 參數 |
值/描述 |
| 安全性類型 |
從 [Standard]、[受信任的啟動虛擬機器] 或 [機密虛擬機器] 中選取。
- 如果您選取 受信任啟動虛擬機器,則會自動選取 安全開機 和 vTPM 選項。
- 如果您選取 機密虛擬機器,則會自動選取 安全開機、 vTPM 和 完整性監控 的選項。 使用機密 VM 時,您無法選擇退出 vTPM。 |
| 影像 |
從清單中選取您要使用的 OS 映像,或選取 [ 查看所有映像 ] 以查看更多資訊,包括您建立並儲存為 Azure Compute Gallery 共用映像 或 受控映像的任何自訂映像。 |
| 虛擬機器大小 |
從清單中選取建議的SKU。 如果您想要使用不同的 SKU,請選取 [查看所有尺寸],然後從清單中選取。 |
| [作業系統] 磁碟類型 |
選取要用於階段作業主機的磁碟類型。 建議您針對生產工作負載使用 進階 SSD 。
磁碟類型必須在 VM 系列上支援,並選取大小。 請確定您選取的是 Azure 計算支援的組合。 更新工作階段主機的作業系統磁碟名稱具有格式為 的新名稱 SessionHostName-DateTime_Hash。 |
|
要加入的網域 |
|
| 選取您要加入的目錄 |
選取 [Microsoft Entra] 或 [Active Directory]。 如果使用 Active Directory,請選取包含網域加入帳戶使用者名稱和密碼秘密的金鑰保存庫。
您可以選擇性地指定網域名稱和組織單位路徑。 |
|
虛擬機器系統管理員帳戶 |
選取金鑰保存庫和密碼,以取得更新工作階段主機 VM 本機系統管理員帳戶的使用者名稱和密碼,以完成相關參數。 使用者名稱和密碼必須符合 Azure 中 Windows VM 的需求。 |
|
自訂設定 |
|
| 自訂設定指令碼 URL |
如果您想要在部署期間執行 PowerShell 腳本,您可以在此處輸入 URL。 |
檢閱或完成對工作階段主機設定的變更之後,請選取 [下一步:排程]。
在 排程 索引標籤上,核取 立即排程更新 方塊,或選取您要開始更新的日期、時間和時區,最多從目前時間開始兩週。
設定排程之後,請選取 [下一步:通知]。
在 [通知] 索引標籤上,完成下列資訊:
| 參數 |
值/描述 |
| 使用者登出前的分鐘數 |
在更新開始時間之後等待使用者登出通知的時間量。此值可在 0 到 60 分鐘之間設定。 使用者將在經過此時間後自動登出。 |
| 登出訊息 |
您可以指定的訊息,以通知使用者他們正在使用的工作階段主機即將開始更新。 |
完成此索引標籤之後,請選取 [下一步:檢閱]。
在 檢閱 索引標籤上,確定驗證通過,並檢閱更新期間使用的資訊。
選取 [ 更新 ] 以排程更新。 當您檢視階段作業主機清單時,「 現行版本」 直欄會顯示階段作業主機所使用之階段作業主機配置版本的時間戳記。 如果 「現行版本」 直欄有警告圖示,則表示 「目標版本」 直欄中版本的時間戳記較晚,且需要更新階段作業主機。
注意事項
第一次排程更新時,您提供的設定會覆寫 工作階段主機管理原則中的預設設定。 後續更新將預先填入這些參數,並儲存任何變更。
以下是如何使用 Az.DesktopVirtualization PowerShell 模組為會話主機排程新的更新。 當您排程更新時,會使用主機集區的工作階段主機組態。 在排程更新之前,您必須先變更階段作業主機組態。
您可以在排程更新之前更新階段作業主機管理原則,其中變更會持續存在以供將來使用。 或者,您可以在排程更新時置換工作階段主機管理原則中的值,但它們僅適用於該更新。
重要事項
在下列範例中,您必須變更 <placeholder> 自己的值。
使用 PowerShell 終端機類型在 Azure 入口網站 中開啟 Azure Cloud Shell,或在本機裝置上執行 PowerShell。
使用 Update-AzWvdSessionHostConfiguration Cmdlet 來更新工作階段主機設定,您只需要指定要變更的參數。 以下是一些範例命令:
若要指定要使用的工作階段主機不同的自訂映像,請執行下列命令。 如需如何尋找 Marketplace 映像值的資訊,請參閱搭配 Azure PowerShell 尋找和使用 Azure Marketplace 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,請執行下列命令。 更新工作階段主機的作業系統磁碟名稱具有格式為 的新名稱 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 *
選擇性:如果您想要在排程更新之前更新工作階段主機管理原則,請使用 Cmdlet 執行 Update-AzWvdSessionHostManagement 下列命令。 或者,您可以在排程更新時覆寫特定值,這些值僅用於該更新。 如需有效的時區值,請參閱 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 的清空模式。 虛擬機器的清空模式會根據其所處的更新階段自動變更。 如果工作階段主機在更新後無法復原,則會啟用其清空模式設定。 更新完成後,排空模式將重置。
工作階段主機更新大約需要 20 分鐘。 您在批次大小中指定的工作階段主機數目將會同時更新,然後再移至下一個批次。 您應該將整體完成時間納入排程時間。
監控更新進度
更新開始後,您可以檢查其進度。 選取案例的相關索引標籤,然後依照步驟操作。
以下是如何使用 Azure 入口網站監視更新進度。
從 Azure 虛擬桌面概觀中,選取 [ 主機集區],然後選取您排程更新的主機集區。
選取 [工作階段主機]。
藍色橫幅提供更新的狀態。 它只顯示一個時間點,因此您需要選取 [重新整理] 以檢查最新進度。
如果您選擇立即開始更新,則訊息會指出更新在開始時已排程更新,但此訊息會在您重新整理後更新。 在更新期間,您會看到在更新期間從主機集區中移除的工作階段主機的批次大小數目。
以下是如何使用 Az.DesktopVirtualization PowerShell 模組監視更新進度。
從您現有的 PowerShell 會話中,搭配下列範例使用 Cmdlet 來 Get-AzWvdSessionHostManagementsUpdateStatus 取得目前更新的詳細數據。
若要查看最新更新的進度,請執行下列命令:
$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 工作階段中,搭配下列範例使用 Cmdlet 來 Invoke-AzWvdControlSessionHostUpdate 暫停或繼續目前的更新。
首先,執行以下命令檢查更新狀態:
$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
後續步驟