如何使用PowerShell检查Azure虚拟机是否启用备份?有无更简便方法?
如何用PowerShell检查Azure虚拟机的备份启用状态
当然可以!你提到的对比虚拟机列表和Recovery Services Vault配置的方法确实可行,但其实有更直接、高效的方式,不用手动匹配两个数据集,我来给你拆解几种实用方案:
方法1:通过Recovery Services模块直接关联VM与备份状态
如果你的VM都在同一个Recovery Services Vault下,可以直接通过模块查询已备份的VM,再和所有VM做关联,生成包含备份状态的列表:
# 替换为你的Recovery Services Vault名称和资源组 $vaultName = "YourRecoveryVaultName" $resourceGroupName = "YourVaultResourceGroup" # 获取Vault对象并设置上下文 $vault = Get-AzRecoveryServicesVault -Name $vaultName -ResourceGroupName $resourceGroupName Set-AzRecoveryServicesVaultContext -Vault $vault # 获取所有已备份的Azure虚拟机 $backedUpVMs = Get-AzRecoveryServicesBackupItem -BackupManagementType AzureVM -WorkloadType AzureVM # 获取所有虚拟机并添加备份状态属性 $allVMs = Get-AzVM $VMsWithBackupStatus = $allVMs | ForEach-Object { $isProtected = $backedUpVMs.Name -contains $_.Name [PSCustomObject]@{ VMName = $_.Name ResourceGroupName = $_.ResourceGroupName IsBackedUp = $isProtected AssociatedBackupVault = if ($isProtected) { $vaultName } else { "未启用备份" } } } # 查看最终结果 $VMsWithBackupStatus
方法2:用Azure Resource Graph一键查询(推荐大量VM/多Vault场景)
如果你管理多个Recovery Services Vault或者跨订阅的VM,Azure Resource Graph是最简便的方式——它可以一次性跨资源查询所有VM的备份状态,不用逐个切换Vault上下文:
# 编写Resource Graph查询语句,获取VM及其备份关联信息 $backupStatusQuery = @" Resources | where type == 'Microsoft.Compute/virtualMachines' | join kind=leftouter ( Resources | where type == 'Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems' | where properties.dataSourceInfo.type == 'Microsoft.Compute/virtualMachines' | project vmName = tostring(properties.dataSourceInfo.name), vaultName = split(id, '/')[8], backupPolicyName = split(properties.policyId, '/')[10] ) on $left.name == $right.vmName | project VMName = name, ResourceGroup = resourceGroup, IsBackedUp = iff(isnotnull(vaultName), '已启用', '未启用'), BackupVault = coalesce(vaultName, '无'), BackupPolicy = coalesce(backupPolicyName, '无') "@ # 执行查询并输出结果 Search-AzGraph -Query $backupStatusQuery
补充说明
Azure虚拟机本身的对象属性里并没有直接存储备份状态——因为备份是由Recovery Services Vault独立管理的,所以必须通过Vault资源或Resource Graph来获取关联信息。上面的Resource Graph方法是最省心的,尤其是大规模VM管理场景,能大幅节省操作时间。
内容的提问来源于stack exchange,提问作者Manjunath Rao
相关产品推荐
相关产品推荐

