使用維護組態和 Azure PowerShell 控制更新
適用於: ✔️ Linux VM ✔️ Windows VM ✔️ 彈性擴展集 ✔️ 統一擴展集
您可以使用維護設定功能來控制何時將平臺更新套用至各種 Azure 資源。 本文涵蓋專用主機和隔離虛擬機 (VM) 的 Azure PowerShell 選項。 如需使用維護設定功能、其限制和其他管理選項之優點的詳細資訊,請參閱 使用維護設定管理平臺更新。
如果您要尋找使用擴展集維護設定的相關信息,請參閱 Azure 虛擬機器擴展集 的維護控制。
重要
特定 範圍 支援特定電腦類型和排程。 請務必為您的 VM 選取正確的範圍。
啟用 Azure PowerShell 模組
請確定 PowerShellGet
為最新狀態:
Install-Module -Name PowerShellGet -Repository PSGallery -Force
Az.Maintenance
安裝 Azure PowerShell 模組:
Install-Module -Name Az.Maintenance
確認您執行的是最新版本 Az.Maintenance
(1.2.0 版):
Get-Module -ListAvailable -Name Az.Maintenance
請確定您正在執行適當的 版本 Az.Maintenance
:
Import-Module -Name Az.Maintenance -RequiredVersion 1.2.0
如果您要在本機安裝,請務必以系統管理員身分開啟您的 Azure PowerShell 提示字元。
系統可能會要求您確認您想要從不受信任的存放庫進行安裝。 輸入 Y 或選取 [ 全部 是] 以安裝模組。
建立維修設定
建立維護設定的第一個步驟是建立資源群組作為組態的容器。 此範例會在eastus中建立名為 myMaintenanceRG 的資源群組。 若已有要使用的資源群組,則可跳過此部分,且在其餘範例中以您自己的資源群組名稱來取代。
New-AzResourceGroup `
-Location eastus `
-Name myMaintenanceRG
您可以宣告 Azure 將在您的資源上定期套用更新的排程時間。 建立排程的窗口之後,您不再需要手動套用更新。
您可以將維護週期表示為每日、每周或每月。 以下列出一些範例:
- 每日:
RecurEvery
或"3Days"
的值"Day"
。 - 每周:
RecurEvery
或"Week Saturday,Sunday"
的值"3Weeks"
。 - 每月:
RecurEvery
"Month day23,day24"
或"Month Last Sunday"
的值"Month Fourth Monday"
。
Host
此範例會建立名為 myConfig 的 Host
維護組態,其排程的時段為每月第四個星期一 5 小時。 duration
此範圍的排程值應至少為兩小時。 若要開始,請定義 的參數 New-AzMaintenanceConfiguration
:
$RGName = "myMaintenanceRG"
$configName = "myConfig"
$scope = "Host"
$location = "eastus"
$timeZone = "Pacific Standard Time"
$duration = "05:00"
$startDateTime = "2022-11-01 00:00"
$recurEvery = "Month Fourth Monday"
定義參數之後,您可以使用 New-AzMaintenanceConfiguration
Cmdlet 來建立組態:
New-AzMaintenanceConfiguration
-ResourceGroup $RGName `
-Name $configName `
-MaintenanceScope $scope `
-Location $location `
-StartDateTime $startDateTime `
-TimeZone $timeZone `
-Duration $duration `
-RecurEvery $recurEvery
使用 $scope = "Host"
可確保維護設定會用於控制主機上的更新。 請務必為目標計算機的特定範圍建立組態。 深入瞭解範圍。
作業系統映像
此範例會建立名為 myConfig 的維護組態, osimage
其排程時間範圍為每 5 天 8 小時。 duration
此範圍的排程值應該至少為5小時。 此範圍允許排程週期最多7天。
$RGName = "myMaintenanceRG"
$configName = "myConfig"
$scope = "osimage"
$location = "eastus"
$timeZone = "Pacific Standard Time"
$duration = "08:00"
$startDateTime = "2022-11-01 00:00"
$recurEvery = "5days"
定義參數之後,您可以使用 New-AzMaintenanceConfiguration
Cmdlet 來建立組態:
New-AzMaintenanceConfiguration
-ResourceGroup $RGName `
-Name $configName `
-MaintenanceScope $scope `
-Location $location `
-StartDateTime $startDateTime `
-TimeZone $timeZone `
-Duration $duration `
-RecurEvery $recurEvery
客體
維護組態功能的最新新增是 InGuestPatch
範圍。 此範例示範如何使用 Azure PowerShell 建立客體範圍的維護設定。 如需此範圍的詳細資訊,請參閱 來賓。
$RGName = "myMaintenanceRG"
$configName = "myConfig"
$scope = "InGuestPatch"
$location = "eastus"
$timeZone = "Pacific Standard Time"
$duration = "04:00"
$startDateTime = "2022-11-01 00:00"
$recurEvery = "Week Saturday, Sunday"
$WindowsParameterClassificationToInclude = "FeaturePack","ServicePack";
$WindowParameterKbNumberToInclude = "KB123456","KB123466";
$WindowParameterKbNumberToExclude = "KB123456","KB123466";
$RebootOption = "IfRequired";
$LinuxParameterClassificationToInclude = "Other";
$LinuxParameterPackageNameMaskToInclude = "apt","httpd";
$LinuxParameterPackageNameMaskToExclude = "ppt","userpk";
定義參數之後,您可以使用 New-AzMaintenanceConfiguration
Cmdlet 來建立組態:
New-AzMaintenanceConfiguration
-ResourceGroup $RGName `
-Name $configName `
-MaintenanceScope $scope `
-Location $location `
-StartDateTime $startDateTime `
-TimeZone $timeZone `
-Duration $duration `
-RecurEvery $recurEvery `
-WindowParameterClassificationToInclude $WindowsParameterClassificationToInclude `
-WindowParameterKbNumberToInclude $WindowParameterKbNumberToInclude `
-WindowParameterKbNumberToExclude $WindowParameterKbNumberToExclude `
-InstallPatchRebootSetting $RebootOption `
-LinuxParameterPackageNameMaskToInclude $LinuxParameterPackageNameMaskToInclude `
-LinuxParameterClassificationToInclude $LinuxParameterClassificationToInclude `
-LinuxParameterPackageNameMaskToExclude $LinuxParameterPackageNameMaskToExclude `
-ExtensionProperty @{"InGuestPatchMode"="User"}
如果您嘗試建立具有相同名稱但位於不同位置的組態,您將會收到錯誤。 針對資源群組,設定名稱必須是唯一的。
您可以使用 Get-AzMaintenanceConfiguration 來檢查是否已成功建立維護 組態:
Get-AzMaintenanceConfiguration | Format-Table -Property Name,Id
指派設定
建立設定之後,您可能也想要使用 Azure PowerShell 將機器指派給它。 您可以使用 New-AzConfigurationAssignment Cmdlet。
隔離式 VM
使用組態的標識碼,將組態指派給 VM。 指定 -ResourceType VirtualMachines
。 提供的 VM -ResourceName
名稱,並為 提供 VM -ResourceGroupName
的資源群組。
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
專用主機
若要將組態套用至專用主機,您必須包含 -ResourceType hosts
具有 -ResourceParentName
主機群組名稱的 和 -ResourceParentType hostGroups
:
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName myHostGroup `
-ResourceParentType hostGroups `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
虛擬機器擴展集
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
來賓
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myGuest" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
檢查是否有擱置的更新
檢查擱置中的更新,請使用 Get-AzMaintenanceUpdate。 如果 VM 與您登入的訂用帳戶不同,請使用 -subscription
來指定 VM 的 Azure 訂用帳戶。
如果沒有要顯示的更新,此命令不會傳回任何內容。 否則,它會傳 PSApplyUpdate
回 物件:
{
"maintenanceScope": "Host",
"impactType": "Freeze",
"status": "Pending",
"impactDurationInSec": 9,
"notBefore": "2020-02-21T16:47:44.8728029Z",
"properties": {
"resourceId": "/subscriptions/39c6cced-4d6c-4dd5-af86-57499cd3f846/resourcegroups/Ignite2019/providers/Microsoft.Compute/virtualMachines/MCDemo3"
}
隔離式 VM
檢查隔離式 VM 是否有擱置中更新。 在此範例中,輸出會格式化為資料表以取得可讀性:
Get-AzMaintenanceUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" | Format-Table
專用主機
檢查專用主機是否有擱置中更新。 在此範例中,輸出會格式化為資料表以取得可讀性:
Get-AzMaintenanceUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName "myHostGroup" `
-ResourceParentType "hostGroups" `
-ProviderName "Microsoft.Compute" | Format-Table
虛擬機器擴展集
Get-AzMaintenanceUpdate `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute" | Format-Table
套用更新
使用 New-AzApplyUpdate 來套用擱置的更新。 套用更新呼叫最多可能需要 2 小時才能完成。
此 Cmdlet 僅適用於主機和 OS 映射範圍。 不適用於來賓範圍。
隔離式 VM
建立將更新套用至隔離 VM 的要求:
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute"
成功時,此命令會傳 PSApplyUpdate
回物件。 您可以使用 Name
命令中的 Get-AzApplyUpdate
屬性來檢查更新狀態,如本文稍後所述。
專用主機
將更新套用至專用主機:
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName "myHostGroup" `
-ResourceParentType "hostGroups" `
-ProviderName Microsoft.Compute
虛擬機器擴展集
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute"
檢查更新狀態
若要檢查更新的狀態,請使用 Get-AzApplyUpdate。 下列命令會針對 參數顯示default
-ApplyUpdateName
最新更新的狀態。 您可取代更新名稱 (由 New-AzApplyUpdate 命令傳回),以取得特定更新的狀態。
此 Cmdlet 僅適用於主機和 OS 映射範圍。 不適用於來賓範圍。
Status : Completed
ResourceId : /subscriptions/12ae7457-4a34-465c-94c1-17c058c2bd25/resourcegroups/TestShantS/providers/Microsoft.Comp
ute/virtualMachines/DXT-test-04-iso
LastUpdateTime : 1/1/2020 12:00:00 AM
Id : /subscriptions/12ae7457-4a34-465c-94c1-17c058c2bd25/resourcegroups/TestShantS/providers/Microsoft.Comp
ute/virtualMachines/DXT-test-04-iso/providers/Microsoft.Maintenance/applyUpdates/default
Name : default
Type : Microsoft.Maintenance/applyUpdates
LastUpdateTime
是您起始更新或平臺起始更新的時間,因為您沒有使用自我維護視窗。 如果從未透過維護組態套用更新, LastUpdateTime
則會顯示預設值。
隔離式 VM
檢查特定虛擬機器的更新:
Get-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" `
-ApplyUpdateName "applyUpdateName"
專用主機
檢查專用主機的更新:
Get-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName "myHostGroup" `
-ResourceParentType "hostGroups" `
-ProviderName "Microsoft.Compute" `
-ApplyUpdateName "applyUpdateName"
虛擬機器擴展集
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute" `
-ApplyUpdateName "applyUpdateName"
刪除維護設定
若要刪除維護設定,請使用 Remove-AzMaintenanceConfiguration:
Remove-AzMaintenanceConfiguration `
-ResourceGroupName "myResourceGroup" `
-Name "configName"
下一步
若要深入瞭解,請參閱 Azure 中虛擬機的維護。