You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Azure Python SDK查询Azure VM备份策略及启停调度

使用Azure Python SDK查询VM备份策略与启停调度信息

没问题,我来一步步帮你搞定这几个Azure管理的常见需求,用Python SDK完全能实现,同时也给你说下Portal里的查看方法。

一、查询已绑定VM的备份策略详情

首先你得安装几个必要的SDK包,打开终端跑这个命令:

pip install azure-mgmt-recoveryservices azure-mgmt-recoveryservicesbackup azure-identity

接下来是具体的代码实现,你只需要替换自己的订阅ID、资源组、VM名称这些参数就行:

from azure.identity import DefaultAzureCredential
from azure.mgmt.recoveryservicesbackup import RecoveryServicesBackupClient
from azure.mgmt.recoveryservices import RecoveryServicesClient

# 替换成你的实际参数
subscription_id = "你的订阅ID"
resource_group_name = "VM所在的资源组名称"
vault_name = "备份Vault的名称"
vm_name = "目标VM的名称"

# 初始化身份验证和客户端(用DefaultAzureCredential最方便,支持本地开发、Azure CLI等多种认证方式)
credential = DefaultAzureCredential()
backup_client = RecoveryServicesBackupClient(credential, subscription_id)
recovery_services_client = RecoveryServicesClient(credential, subscription_id)

# 获取备份Vault的ID,后续查询需要用到
vault = recovery_services_client.vaults.get(resource_group_name, vault_name)
vault_id = vault.id

# 查询目标VM对应的备份保护项
protected_items = backup_client.protected_items.list(
    vault_name=vault_name,
    resource_group_name=resource_group_name,
    filter=f"backupManagementType eq 'AzureIaasVM' and itemName eq '{vm_name}'"
)

# 提取保护项并获取对应的备份策略详情
for item in protected_items:
    if item.properties.protection_state == "Protected":
        policy_id = item.properties.policy_id
        # 从policy ID里提取策略名称,或者直接用ID调用get方法也行
        policy_name = policy_id.split("/")[-1]
        policy = backup_client.protection_policies.get(
            vault_name=vault_name,
            resource_group_name=resource_group_name,
            policy_name=policy_name
        )
        # 打印关键信息,你可以根据需求提取更多字段
        print("=== 备份策略详情 ===")
        print(f"策略名称: {policy.name}")
        print(f"备份频率: {policy.properties.schedule_policy.schedule_run_frequency}")
        print(f"保留周期: {policy.properties.retention_policy.retention_duration.days}天")
        print(f"增量备份间隔: {policy.properties.schedule_policy.schedule_run_interval}小时")

如果不知道备份Vault的名称,你可以先调用recovery_services_client.vaults.list_by_subscription()列出订阅下所有的Vault,再筛选关联目标VM的那个。

二、获取VM的启停调度信息

VM的启停调度通常有两种主流实现方式,对应的SDK查询方法不一样,我都给你列出来:

方式1:通过Azure Automation Runbook实现的启停

这种方式需要先安装azure-mgmt-automation包:

pip install azure-mgmt-automation

代码示例,替换你的Automation账户相关参数:

from azure.identity import DefaultAzureCredential
from azure.mgmt.automation import AutomationClient

subscription_id = "你的订阅ID"
resource_group_name = "Automation账户所在的资源组"
automation_account_name = "你的Automation账户名称"

credential = DefaultAzureCredential()
automation_client = AutomationClient(credential, subscription_id)

# 获取所有和VM启停相关的Runbook(假设Runbook名称包含Start/Stop关键词)
runbooks = automation_client.runbook.list_by_automation_account(resource_group_name, automation_account_name)
for runbook in runbooks:
    if "Start" in runbook.name or "Stop" in runbook.name:
        # 查询该Runbook关联的调度计划
        job_schedules = automation_client.job_schedule.list_by_automation_account(resource_group_name, automation_account_name)
        for job_sched in job_schedules:
            if job_sched.properties.runbook.name == runbook.name:
                schedule = automation_client.schedule.get(
                    resource_group_name,
                    automation_account_name,
                    job_sched.properties.schedule.name
                )
                print(f"\n=== 启停调度详情 ===")
                print(f"Runbook名称: {runbook.name}")
                print(f"调度名称: {schedule.name}")
                print(f"调度频率: {schedule.properties.frequency}")
                print(f"下次运行时间: {schedule.properties.next_run}")

方式2:通过Start/Stop VM v2官方解决方案实现的启停

这是Azure官方推荐的VM启停方案,对应的资源属于Monitor服务,需要安装azure-mgmt-monitor包:

pip install azure-mgmt-monitor

代码示例:

from azure.identity import DefaultAzureCredential
from azure.mgmt.monitor import MonitorManagementClient

subscription_id = "你的订阅ID"
resource_group_name = "Start/Stop VM v2解决方案所在的资源组"

credential = DefaultAzureCredential()
monitor_client = MonitorManagementClient(credential, subscription_id)

# 查询所有和VM启停相关的调度规则(规则名称通常包含StartStop关键词)
rules = monitor_client.scheduled_query_rules.list_by_resource_group(resource_group_name)
for rule in rules:
    if "StartStop" in rule.name:
        print(f"\n=== Start/Stop VM v2调度详情 ===")
        print(f"规则名称: {rule.name}")
        print(f"目标VM资源类型: {rule.properties.target_resource_types}")
        print(f"调度频率: {rule.properties.schedule.frequency}")
        print(f"触发间隔: {rule.properties.schedule.interval}分钟")

三、Azure Portal中查看VM备份策略详情的步骤

这个操作很简单,跟着步骤走就行:

  1. 登录Azure Portal,找到目标VM的详情页面
  2. 在左侧操作栏里,找到备份选项(在“运维管理”分组下面)
  3. 进入备份页面后,顶部就能看到当前VM绑定的备份策略名称,点击这个名称就能查看完整的策略详情,包括备份计划、保留周期、增量备份设置等

内容的提问来源于stack exchange,提问作者Himanshu Mundeepi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:45:32