适用于:✔️ Linux VM ✔️ Windows VM ✔️ 灵活规模集 ✔️ 统一规模集
可以使用 Azure PowerShell 查看何时安排 VM 进行维护。 使用 -status 参数时可通过 Get-AzVM cmdlet 获得计划内维护信息。
仅当有计划内维护时,才会返回维护信息。 如果未计划任何影响 VM 的维护,该 cmdlet 不返回任何维护信息。
Get-AzVM -ResourceGroupName myResourceGroup -Name myVM -Status
输出
MaintenanceRedeployStatus               : 
  IsCustomerInitiatedMaintenanceAllowed : True
  PreMaintenanceWindowStartTime         : 5/14/2018 12:30:00 PM
  PreMaintenanceWindowEndTime           : 5/19/2018 12:30:00 PM
  MaintenanceWindowStartTime            : 5/21/2018 4:30:00 PM
  MaintenanceWindowEndTime              : 6/4/2018 4:30
  LastOperationResultCode               : None 
在 MaintenanceRedeployStatus 下返回以下属性:
| Value | 说明 | 
|---|---|
| IsCustomerInitiatedMaintenanceAllowed | 指示此时是否可以在 VM 上启动维护 | 
| PreMaintenanceWindowStartTime | 可以在 VM 上启动维护的自助式维护时段的起点 | 
| PreMaintenanceWindowEndTime | 可以在 VM 上启动维护的自助式维护时段的终点 | 
| MaintenanceWindowStartTime | Azure 在 VM 上启动维护的计划内维护时段的起点 | 
| MaintenanceWindowEndTime | Azure 在 VM 上启动维护的计划内维护时段的终点 | 
| LastOperationResultCode | 上次尝试在 VM 上启动维护的结果 | 
还可以通过使用 Get-AzVM 并且不指定 VM 来获取资源组中所有 VM 的维护状态。
Get-AzVM -ResourceGroupName myResourceGroup -Status
以下 PowerShell 示例会获取订阅 ID,并返回指示是否已计划进行维护的 VM 列表。
function MaintenanceIterator {
  param (
    $SubscriptionId
  )
  
  Select-AzSubscription -SubscriptionId $SubscriptionId | Out-Null
  $rgList = Get-AzResourceGroup
  foreach ($rg in $rgList) {
    $vmList = Get-AzVM -ResourceGroupName $rg.ResourceGroupName 
    foreach ($vm in $vmList) {
      $vmDetails = Get-AzVM -ResourceGroupName $rg.ResourceGroupName -Name $vm.Name -Status
      [pscustomobject]@{
        Name                                  = $vmDetails.Name
        ResourceGroupName                     = $rg.ResourceGroupName
        IsCustomerInitiatedMaintenanceAllowed = [bool]$vmDetails.MaintenanceRedeployStatus.IsCustomerInitiatedMaintenanceAllowed
        LastOperationMessage                  = $vmDetails.MaintenanceRedeployStatus.LastOperationMessage
      }
    }
  }
}
使用 PowerShell 在 VM 上启动维护
如果 IsCustomerInitiatedMaintenanceAllowed 设置为 true,以下命令使用上一部分中函数的信息,在 VM 上启动维护。
MaintenanceIterator -SubscriptionId <Subscription ID> |
    Where-Object -FilterScript {$_.IsCustomerMaintenanceAllowed} |
        Restart-AzVM -PerformMaintenance
经典部署
重要
通过经典部署模型创建的 VM 将于 2023 年 9 月 1 日停用。
如果从 Azure 服务管理中使用 IaaS 资源,请在 2023 年 9 月 1 日前完成迁移。 我们建议你尽快进行切换,以利用 Azure 资源管理器中的许多增强功能。
有关详细信息,请参阅在 2023 年 9 月 1 日之前将 IaaS 资源迁移到 Azure 资源管理器。
如果你仍在使用由经典部署模型部署的旧 VM,则可以使用 PowerShell 查询 VM,并启动维护。
若要获取 VM 的维护状态,请键入:
Get-AzureVM -ServiceName <Service name> -Name <VM name>
若要在经典 VM 上启动维护,请键入:
Restart-AzureVM -InitiateMaintenance -ServiceName <service name> -Name <VM name>