使用维护配置和 Azure PowerShell 来控制更新
适用于:✔️ Linux VM ✔️ Windows VM ✔️ 灵活规模集 ✔️ 统一规模集
创建维护配置,你可以决定何时将平台更新应用于各种 Azure 资源。 本主题介绍了面向专用主机和独立 VM 的 Azure PowerShell 选项。 有关使用维护配置的好处、其限制和其他管理选项的详细信息,请参阅使用维护配置管理平台更新。
如果正在查找有关规模集维护配置的信息,请参阅虚拟机规模集的维护控制。
重要
每个范围都仅支持特定的虚拟机类型和计划日程,因此请确保选择适合你的虚拟机的范围。
启用 PowerShell 模块
确保 PowerShellGet
为最新版本。
Install-Module -Name PowerShellGet -Repository PSGallery -Force
安装 Az.Maintenance
PowerShell 模块。
Install-Module -Name Az.Maintenance
检查运行的是否是最新版本的 Az.Maintenance
PowerShell 模块(版本 1.2.0)
Get-Module -ListAvailable -Name Az.Maintenance
确保使用的是正确版本的 Az.Maintenance
Import-Module -Name Az.Maintenance -RequiredVersion 1.2.0
如果在本地安装,请确保以管理员身份打开 PowerShell 提示符。
系统还可能会要求你确认是否要从不受信任的存储库进行安装。 键入 Y
或选择“全是”以安装该模块。
创建维护配置
创建维护配置的第一步是创建一个资源组作为你的配置的容器。 此示例在 chinanorth 中创建名为 myMaintenanceRG 的资源组。 如果你已有一个可供使用的资源组,则可跳过此部分,并在其余示例中将资源组名称替换为你自己的名称。
New-AzResourceGroup `
-Location chinanorth `
-Name myMaintenanceRG
可以声明一个 Azure 将用于在资源上应用更新的计划窗口。 在创建计划时段后,不再需要手动应用更新。 维护重复周期可以表示为每日、每周或每月。 下面是一些示例:
- 每日 - RecurEvery“Day”或“3Days”
- 每周 - RecurEvery“3Weeks”或“Week Saturday,Sunday”
- 每月 - RecurEvery“Month day23,day24”、“Month Last Sunday”或“Month Fourth Monday”
主机
此示例创建一个名为 myConfig 的维护配置,范围为主机,计划窗口为每月第四个星期一的 5 小时。 请务必注意,此范围的计划持续时间应至少为两小时。 首先,需要定义 New-AzMaintenanceConfiguration
所需的所有参数
$RGName = "myMaintenanceRG"
$configName = "myConfig"
$scope = "Host"
$location = "chinanorth"
$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"
可确保维护配置用于控制主机上的更新。 需要确保为目标计算机的特定范围创建配置。 要了解有关范围的详细信息,请查看维护配置范围。
OS 映像
在此示例中,将创建名为 myConfig 的维护配置,其范围限定为 OS 映像,其计划时段为每 5 天 8 小时。 请务必注意,此范围的计划持续时间应至少为 5 小时。 需要注意的另一个关键区别是,此范围允许计划重复周期最多 7 天。
$RGName = "myMaintenanceRG"
$configName = "myConfig"
$scope = "osimage"
$location = "chinanorth"
$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 范围。 此示例演示如何使用 PowerShell 为来宾范围创建维护配置。 若要了解有关此范围的详细信息,请参阅来宾。
$RGName = "myMaintenanceRG"
$configName = "myConfig"
$scope = "InGuestPatch"
$location = "chinanorth"
$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
分配此配置
创建配置后,你可能还希望使用 PowerShell 为其分配计算机。 为此,我们将使用 New-AzConfigurationAssignment。
隔离的 VM
使用此配置的 ID 将配置分配到 VM。 指定 -ResourceType VirtualMachines
,为 -ResourceName
提供 VM 的名称,为 -ResourceGroupName
提供 VM 的资源组。
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "chinanorth" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
专用主机
若要将配置应用到专用主机,还需要包含 -ResourceType hosts
、带主机组名称的 -ResourceParentName
,以及 -ResourceParentType hostGroups
。
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "chinanorth" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName myHostGroup `
-ResourceParentType hostGroups `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
虚拟机规模集
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "chinanorth" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
来宾
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "chinanorth" `
-ResourceName "myGuest" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
检查是否有挂起的更新
使用 Get-AzMaintenanceUpdate 查看是否存在挂起的更新。 使用 -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 "chinanorth" `
-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
对象。 可以在 Get-AzApplyUpdate
命令中使用 Name 特性来检查更新状态。 请参阅检查更新状态。
专用主机
将更新应用到专用主机。
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName "myHostGroup" `
-ResourceParentType "hostGroups" `
-ProviderName Microsoft.Compute
虚拟机规模集
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-Location "chinanorth" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute"
检查更新状态
使用 Get-AzApplyUpdate 检查更新状态。 对 -ApplyUpdateName
参数使用 default
时,以下命令会显示最新更新的状态。 可以使用更新的名称(由 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 是完成更新的时间,此更新是你发起的,或由平台在你未使用自行维护时段时发起的。 如果从未通过维护配置来应用更新,则会显示默认值。
隔离的 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 "chinanorth" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute" `
-ApplyUpdateName "applyUpdateName"
删除维护配置
使用 Remove-AzMaintenanceConfiguration 删除维护配置。
Remove-AzMaintenanceConfiguration `
-ResourceGroupName "myResourceGroup" `
-Name "configName"
后续步骤
若要了解详细信息,请参阅维护和更新。