使用 PowerShell 处理计划内维护
适用于:✔️ Linux VM ✔️ Windows VM ✔️ 灵活规模集 ✔️ 统一规模集
可以使用 Azure PowerShell 查看何时安排 VM 进行维护。 使用 -status
参数时可通过 Get-AzVM cmdlet 获得计划内维护信息。
仅当有计划内维护时,才会返回维护信息。 如果未计划任何影响 VM 的维护,该 cmdlet 不返回任何维护信息。
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 下返回以下属性:
Value | 说明 |
---|---|
IsCustomerInitiatedMaintenanceAllowed | 指示此时是否可以在 VM 上启动维护 |
PreMaintenanceWindowStartTime | 可以在 VM 上启动维护的自助式维护时段的起点 |
PreMaintenanceWindowEndTime | 可以在 VM 上启动维护的自助式维护时段的终点 |
MaintenanceWindowStartTime | Azure 在 VM 上启动维护的计划内维护时段的起点 |
MaintenanceWindowEndTime | Azure 在 VM 上启动维护的计划内维护时段的终点 |
LastOperationResultCode | 上次尝试在 VM 上启动维护的结果 |
还可以通过使用 Get-AzVM 并且不指定 VM 来获取资源组中所有 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 资源管理器中的许多增强功能。
有关详细信息,请参阅在 2023 年 9 月 1 日之前将 IaaS 资源迁移到 Azure 资源管理器。
如果你仍在使用由经典部署模型部署的旧 VM,则可以使用 PowerShell 查询 VM,并启动维护。
若要获取 VM 的维护状态,请键入:
Get-AzureVM -ServiceName <Service name> -Name <VM name>
若要在经典 VM 上启动维护,请键入:
Restart-AzureVM -InitiateMaintenance -ServiceName <service name> -Name <VM name>