Обработка планового обслуживания с помощью PowerShell

Применимо к: ✔️ Виртуальные машины Linux ✔️ Виртуальные машины Windows ✔️ Универсальные масштабируемые наборы

Чтобы узнать, когда для виртуальных машин запланировано обслуживание, можно также использовать Azure PowerShell. Информацию о плановом обслуживании можно получить с помощью командлета Get-AzVM, используя параметр -status.

Сведения об обслуживании возвращаются, только если имеется запланированное обслуживание. Если нет запланированного обслуживания, влияющего на виртуальную машину, командлет не возвращает информацию об обслуживании.

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 возвращаются следующие свойства:

Значение Описание
IsCustomerInitiatedMaintenanceAllowed Указывает, можно ли сейчас запустить обслуживание на виртуальной машине
PreMaintenanceWindowStartTime Начало периода самообслуживания, когда можно инициировать обслуживание на виртуальной машине
PreMaintenanceWindowEndTime Завершение периода самообслуживания, когда можно инициировать обслуживание на виртуальной машине
MaintenanceWindowStartTime Начало периода запланированного обслуживания, в течение которого Azure запускает обслуживание для виртуальной машины.
MaintenanceWindowEndTime Завершение периода запланированного обслуживания, в течение которого Azure запускает обслуживание для виртуальной машины.
LastOperationResultCode Результат последней попытки инициирования обслуживания на виртуальной машине

Вы также можете получить информацию о состоянии обслуживания всех виртуальных машин в группе ресурсов с помощью командлета Get-AzVM, не указывая виртуальную машину.

Get-AzVM -ResourceGroupName myResourceGroup -Status

В следующем примере PowerShell берется идентификатор подписки и возвращается список виртуальных машин, указывающий, планируется ли обслуживание.


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

Используя информацию из функции в предыдущем разделе, следующая команда запускает обслуживание на виртуальной машине, если для свойства IsCustomerInitiatedMaintenanceAllowed задано значение true.


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

Классические развертывания

Важно!

Поддержка виртуальных машин, созданных с помощью классической модели развертывания, будет прекращена 1 сентября 2023 г.

Если вы используете ресурсы IaaS из службы управления службами Azure, завершите миграцию до 1 сентября 2023 г. Рекомендуем осуществить этот переход как можно раньше, чтобы воспользоваться различными улучшенными функциями в Azure Resource Manager.

Дополнительные сведения см. в статье Перенос ресурсов IaaS в Azure Resource Manager до 1 сентября 2023 г.

Если у вас все еще есть устаревшие виртуальные машины, развернутые с использованием классической модели развертывания, вы можете сделать запрос к ним и запустить их обслуживание с помощью PowerShell.

Чтобы узнать состояние обслуживания виртуальной машины, введите:

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

Чтобы начать обслуживание классической виртуальной машины, введите:

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

Дальнейшие действия

Управлять плановым обслуживанием можно также с помощью Azure CLI или портала.