Condividi tramite


Gestione della manutenzione pianificata con PowerShell

Si applica a: ✔️ macchine virtuali Linux ✔️ macchine virtuali Windows ✔️ set di scalabilità flessibili ✔️ set di scalabilità uniformi

È possibile usare Azure PowerShell per verificare quando le macchine virtuali sono pianificate per la manutenzione. Le informazioni sulla manutenzione pianificata sono disponibili con il cmdlet Get-AzVM, usando il parametro -status.

Le informazioni vengono restituite solo se è presente una manutenzione pianificata. Se non è presente alcuna manutenzione pianificata per la macchina virtuale, il cmdlet non restituisce informazioni.

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 

MaintenanceRedeployStatus restituisce le proprietà seguenti:

valore Descrizione
IsCustomerInitiatedMaintenanceAllowed Indica se in questo momento è possibile avviare la manutenzione per la macchina virtuale
PreMaintenanceWindowStartTime Inizio della finestra di manutenzione self-service, che segnala la possibilità di avviare la manutenzione della VM
PreMaintenanceWindowEndTime Termine della finestra di manutenzione self-service, che segnala la possibilità di avviare la manutenzione della VM
MaintenanceWindowStartTime Inizio della manutenzione pianificata in cui Azure avvia la manutenzione della VM
MaintenanceWindowEndTime Fine dell'intervallo pianificato di manutenzione in cui Azure avvia la manutenzione della macchina virtuale
LastOperationResultCode Risultato dell'ultimo tentativo di avviare la manutenzione della macchina virtuale

È anche possibile ottenere lo stato di manutenzione per tutte le macchine virtuali in un gruppo di risorse tramite Get-AzVM, senza specificare una macchina virtuale.

Get-AzVM -ResourceGroupName myResourceGroup -Status

L'esempio di PowerShell seguente accetta l'ID sottoscrizione e restituisce un elenco di macchine virtuali che indicano se sono pianificate per la manutenzione.


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

Avviare la manutenzione della macchina virtuale usando PowerShell

Usando le informazioni derivate dalla funzione nella sezione precedente, il codice seguente avvia la manutenzione in una macchina virtuale se IsCustomerInitiatedMaintenanceAllowed è impostato su true.


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

Distribuzioni classiche

Importante

Le macchine virtuali create tramite il modello di distribuzione classica verranno ritirati il 1° settembre 2023.

Se si usano risorse IaaS da Gestione dei servizi di Azure, completare la migrazione entro il 1° settembre 2023. È consigliabile effettuare quanto prima questo passaggio per sfruttare i vantaggi delle numerose funzionalità avanzate di Azure Resource Manager.

Per ulteriori informazioni, consultare Migrazione delle risorse IaaS in Azure Resource Manager entro il 1° settembre 2023.

Se si dispone ancora di macchine virtuali legacy distribuite tramite il modello di distribuzione classico, è possibile usare PowerShell per eseguire query per le macchine virtuali e avviare la manutenzione.

Per ottenere lo stato di manutenzione di una macchina virtuale, digitare:

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

Per avviare la manutenzione di una VM classica, digitare:

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

Passaggi successivi

È anche possibile gestire la manutenzione pianificata usando l'interfaccia della riga di comando di Azure o il portale.