Processar a manutenção planeada com o PowerShell

Aplica-se a: ✔️ VMs do Windows VMs ✔️ do Linux Conjuntos ✔️ de dimensionamento ✔️ flexíveis Conjuntos de dimensionamento uniformes

Pode utilizar Azure PowerShell para ver quando as VMs estão agendadas para manutenção. As informações de manutenção planeada estão disponíveis no cmdlet Get-AzVM quando utiliza o -status parâmetro.

As informações de manutenção só são devolvidas se houver manutenção planeada. Se não for agendada nenhuma manutenção que afete a VM, o cmdlet não devolve quaisquer informações de manutenção.

Get-AzVM -ResourceGroupName myResourceGroup -Name myVM -Status

Saída

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 

As seguintes propriedades são devolvidas em MaintenanceRedeployStatus:

Valor Descrição
IsCustomerInitiatedMaintenanceAllowed Indica se pode iniciar a manutenção na VM neste momento
PreMaintenanceWindowStartTime O início da janela self-service de manutenção quando pode iniciar a manutenção na VM
PreMaintenanceWindowEndTime O fim da janela self-service de manutenção quando pode iniciar a manutenção na VM
MaintenanceWindowStartTime O início da manutenção agendada na qual o Azure inicia a manutenção na VM
MaintenanceWindowEndTime O fim da janela agendada de manutenção na qual o Azure inicia a manutenção na VM
LastOperationResultCode O resultado da última tentativa de iniciar a manutenção na VM

Também pode obter o estado de manutenção de todas as VMs num grupo de recursos ao utilizar Get-AzVM e não especificar uma VM.

Get-AzVM -ResourceGroupName myResourceGroup -Status

O exemplo seguinte do PowerShell utiliza o ID da subscrição e devolve uma lista de VMs que indicam se estão agendadas para manutenção.


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
      }
    }
  }
}

Iniciar a manutenção na VM com o PowerShell

Ao utilizar informações da função na secção anterior, o seguinte inicia a manutenção numa VM se IsCustomerInitiatedMaintenanceAllowed estiver definido como verdadeiro.


MaintenanceIterator -SubscriptionId <Subscription ID> |
    Where-Object -FilterScript {$_.IsCustomerMaintenanceAllowed} |
        Restart-AzVM -PerformMaintenance

Implementações clássicas

Importante

As VMs criadas através do modelo de implementação clássica serão descontinuadas a 1 de setembro de 2023.

Se utilizar recursos IaaS da Gestão de Serviços do Azure, conclua a migração até 1 de setembro de 2023. Recomendamos que faça a mudança mais cedo para tirar partido dos muitos melhoramentos de funcionalidades no Azure Resource Manager.

Para obter mais informações, consulte Migrar os seus recursos IaaS para o Azure Resource Manager até 1 de setembro de 2023.

Se ainda tiver VMs legadas que foram implementadas com o modelo de implementação clássica, pode utilizar o PowerShell para consultar VMs e iniciar a manutenção.

Para obter o estado de manutenção de uma VM, escreva:

Get-AzureVM -ServiceName <Service name> -Name <VM name>

Para iniciar a manutenção na VM clássica, escreva:

Restart-AzureVM -InitiateMaintenance -ServiceName <service name> -Name <VM name>

Passos seguintes

Também pode processar a manutenção planeada com a CLI ou portal do Azure.