你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 PowerShell 处理计划内维护

适用于:✔️ 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
{
    Select-AzSubscription -SubscriptionId $args[0]

    $rgList= Get-AzResourceGroup 

    for ($rgIdx=0; $rgIdx -lt $rgList.Length ; $rgIdx++)
    {
        $rg = $rgList[$rgIdx]        
	$vmList = Get-AzVM -ResourceGroupName $rg.ResourceGroupName 
        for ($vmIdx=0; $vmIdx -lt $vmList.Length ; $vmIdx++)
        {
            $vm = $vmList[$vmIdx]
            $vmDetails = Get-AzVM -ResourceGroupName $rg.ResourceGroupName -Name $vm.Name -Status
              if ($vmDetails.MaintenanceRedeployStatus )
            {
                Write-Output "VM: $($vmDetails.Name)  IsCustomerInitiatedMaintenanceAllowed: $($vmDetails.MaintenanceRedeployStatus.IsCustomerInitiatedMaintenanceAllowed) $($vmDetails.MaintenanceRedeployStatus.LastOperationMessage)"               
            }
          }
    }
}

使用 PowerShell 在 VM 上启动维护

如果 IsCustomerInitiatedMaintenanceAllowed 设置为 true,以下命令使用上一部分中函数的信息,在 VM 上启动维护。

Restart-AzVM -PerformMaintenance -name $vm.Name -ResourceGroupName $rg.ResourceGroupName 

经典部署

重要

通过经典部署模型创建的 VM 将于 2023 年 3 月 1 日停用。

如果从 Azure 服务管理中使用 IaaS 资源,请在 2023 年 3 月 1 日结束前完成迁移。 我们建议你尽快进行切换,以利用 Azure 资源管理器中的许多增强功能。

有关详细信息,请参阅在 2023 年 3 月 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>

后续步骤

还可以使用 Azure CLI门户处理计划内维护。