PowerShell を使用した計画メンテナンスの処理

適用対象: ✔️ Linux VM ✔️ Windows VM ✔️ フレキシブル スケール セット ✔️ 均一スケール セット

Azure PowerShell を使用して、VM のメンテナンスの予定を確認できます。 計画メンテナンスに関する情報は、Get-AzVM コマンドレットに -status パラメーターを指定することで取得できます。

計画メンテナンスがある場合にのみ、メンテナンス情報が返されます。 VM に影響を及ぼすメンテナンスがスケジュールされていない場合、コマンドレットはメンテナンス情報を返しません。

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 この時点で VM に対してメンテナンスを開始できるかどうかを示します。
PreMaintenanceWindowStartTime VM に対してメンテナンスを開始できる場合、メンテナンスのセルフサービス期間の始まりです。
PreMaintenanceWindowEndTime VM に対してメンテナンスを開始できる場合、メンテナンスのセルフサービス期間の終わりです。
MaintenanceWindowStartTime Azure が VM に対してメンテナンスを開始する、予定メンテナンスの始まりです。
MaintenanceWindowEndTime Azure が VM に対してメンテナンスを開始する、予定メンテナンス期間の終わりです。
LastOperationResultCode VM に対して最後にメンテナンスを試みたときの結果です。

また、VM を指定しないで Get-AzVM を実行すると、リソース グループ内のすべての VM のメンテナンス状態を取得することもできます。

Get-AzVM -ResourceGroupName myResourceGroup -Status

次の PowerShell の例は、サブスクリプション ID を取り、メンテナンスがスケジュールされているかどうかを示す VM の一覧を返します。


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 を使用して VM に対するメンテナンスを開始する

IsCustomerInitiatedMaintenanceAllowed が true に設定されている場合、前のセクションの関数から取得した情報を使用して、次のように VM に対するメンテナンスを開始します。


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

クラシック デプロイ

重要

クラシック デプロイ モデルで作成された VM は、2023 年 9 月 1 日に廃止される予定です。

Azure サービス管理の IaaS リソースを使用している場合は、2023 年 9 月 1 日までに移行を完了してください。 Azure Resource Manager の多数の機能強化を活用するために、早急に切り替えを行うことをお勧めします。

詳細については、「2023 年 9 月 1 日までに IaaS リソースを Azure Resource Manager に移行する」を参照してください。

クラシック デプロイ モデルを使用してデプロイされたレガシ VM がまだある場合は、PowerShell を使用して、VM を照会し、メンテナンスを開始できます。

VM のメンテナンスの状態を取得するには、次のように入力します。

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

クラシック VM のメンテナンスを開始するには、次のように入力します。

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

次のステップ

Azure CLI またはポータルを使用して計画メンテナンスを処理することもできます。