Control del mantenimiento planeado con PowerShell

Se aplica a: ✔️ Máquinas virtuales Linux ✔️ Máquinas virtuales Windows ✔️ Conjuntos de escalado flexibles ✔️ Conjuntos de escalado uniformes

Azure PowerShell se puede usar para ver cuándo está programado el mantenimiento de las máquinas virtuales. La información de mantenimiento planeado está disponible con el cmdlet Get-AzVM cuando se usa el parámetro -status.

La información de mantenimiento se devuelve solo si hay mantenimiento planeado. Si no está programado ningún mantenimiento que afecte a la máquina virtual, el cmdlet no devuelve ninguna información de mantenimiento.

Get-AzVM -ResourceGroupName myResourceGroup -Name myVM -Status

Output

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 

Las siguientes propiedades se devuelven en MaintenanceRedeployStatus:

Value Descripción
IsCustomerInitiatedMaintenanceAllowed Indica si puede iniciar el mantenimiento en la máquina virtual en este momento
PreMaintenanceWindowStartTime El comienzo de la ventana de autoservicio de mantenimiento en la que puede iniciar el mantenimiento en la máquina virtual
PreMaintenanceWindowEndTime El final de la ventana de autoservicio de mantenimiento en la que puede iniciar el mantenimiento en la máquina virtual
MaintenanceWindowStartTime El comienzo del mantenimiento programado en que Azure inicia el mantenimiento de la máquina virtual
MaintenanceWindowEndTime El final de la ventana de mantenimiento programado en la que Azure inicia el mantenimiento de la máquina virtual
LastOperationResultCode El resultado del último intento de iniciar el mantenimiento en la máquina virtual

También puede obtener el estado de mantenimiento de todas las VM en un grupo de recursos mediante el uso de Get-AzVM sin especificar una VM.

Get-AzVM -ResourceGroupName myResourceGroup -Status

En el siguiente ejemplo de PowerShell se toma el id. de la suscripción y se devuelve una lista de las máquinas virtuales indicando si están programadas para mantenimiento.


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

Inicio del mantenimiento en la máquina virtual mediante PowerShell

Con la información de la función de la sección anterior, lo siguiente inicia el mantenimiento en una máquina virtual si IsCustomerInitiatedMaintenanceAllowed está establecido en true.


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

Implementaciones clásicas

Importante

Las máquinas virtuales creadas con el modelo de implementación clásica se retirarán el 1 de setiembre de 2023.

Si usa recursos de IaaS de administración de servicios de Azure, complete la migración antes del 1 de setiembre de 2023. Le recomendamos que realice el cambio antes, para aprovechar las diversas mejoras de las características de Azure Resource Manager.

Para obtener más información, consulte Migración de los recursos de IaaS a Azure Resource Manager antes del 1 de setiembre de 2023.

Si todavía tiene máquinas virtuales heredadas que se han implementado según el modelo de implementación clásico, puede usar PowerShell para consultar las máquinas virtuales e iniciar el mantenimiento.

Para obtener el estado de mantenimiento de una máquina virtual, escriba lo siguiente:

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

Para iniciar el mantenimiento en una máquina virtual clásica, escriba lo siguiente:

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

Pasos siguientes

El mantenimiento planeado también se puede controlar con la CLI de Azure o con Portal.