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>