生成MARS代理版本报告:多恢复服务库命令行方法求助
问题分析与解决办法
脚本无返回结果的核心原因
你的脚本存在三个关键问题:
- WorkloadType参数错误:MARS代理对应的备份负载类型是
MAB(Microsoft Azure Backup),而非AzureFiles——AzureFiles用于备份Azure云存储中的文件共享,和本地Windows服务器的MARS代理无关。 - 缺少输出逻辑:脚本仅定义了变量但未添加任何输出操作,即便获取到数据也不会在控制台显示。
- 容器筛选不精准:获取Windows容器时,未指定
-BackupManagementType MAB,可能混入其他非MARS代理对应的Windows容器。
修正后的PowerShell脚本
# 获取所有Recovery Services Vault $vaults = Get-AzRecoveryServicesVault # 遍历每个Vault foreach ($vault in $vaults) { # 设置当前Vault上下文(避免跨Vault的识别问题) Set-AzRecoveryServicesVaultContext -Vault $vault # 获取当前Vault下所有MARS代理对应的Windows容器 $containers = Get-AzRecoveryServicesBackupContainer ` -ContainerType Windows ` -BackupManagementType MAB ` -VaultId $vault.ID # 遍历容器,提取代理及备份信息 foreach ($container in $containers) { $backupItems = Get-AzRecoveryServicesBackupItem ` -Container $container ` -WorkloadType MAB ` -VaultId $vault.ID # 输出结构化的服务器与代理信息 foreach ($item in $backupItems) { [PSCustomObject]@{ VaultName = $vault.Name ResourceGroupName = $vault.ResourceGroupName ProtectedServerName = $container.FriendlyName MarsAgentVersion = $container.AgentVersion IsAgentOutdated = $container.IsAgentOutdated BackupItemName = $item.Name LastBackupStatus = $item.LastBackupStatus } } } }
关键说明
- 版本自动判断:
$container.IsAgentOutdated属性会直接返回布尔值,标记该服务器的MARS代理是否需要升级,无需手动对比版本号。 - 批量导出:若需要生成报告文件,可在脚本末尾追加
| Export-Csv -Path "MarsAgentsReport.csv" -NoTypeInformation -Append,将结果导出为CSV格式。 - 上下文设置:
Set-AzRecoveryServicesVaultContext用于确保后续命令在当前Vault的上下文下执行,避免权限或识别异常。
内容的提问来源于stack exchange,提问作者GIT_Beginner
相关产品推荐
相关产品推荐

