gpt4 book ai didi

azure - 是否可以通过编程方式从 Azure VM 获取 ASR Vault Id、结构和容器名称?

转载 作者:行者123 更新时间:2023-12-02 06:41:50 29 4
gpt4 key购买 nike

我正在尝试通过 Azure Powershell(Az 模块)从 Azure VM 禁用 Azure 站点恢复保护。这个想法是使用名称和资源组获取虚拟机:

Get-AzVM -Name $name -ResourceGroupName $rgName

然后使用将虚拟机连接到 ASR protected 项目的任何链接数据来禁用保护。

根据我的理解,这可以使用以下 cmdlet 来完成:

Remove-AzRecoveryServicesAsrReplicationProtectedItem

此 cmdlet 需要复制 protected 项目对象:

Get-AzRecoveryServicesAsrReplicationProtectedItem

这需要一个保护容器,而保护容器又需要一个结构,最后需要一个保险库。

当然,如果我事先知道这些参数和对象,我就可以获得它们。但这将违背创建一个使用 Azure 虚拟机名称和 RG 以编程方式解决这些问题的脚本的目的。

我找不到任何从 Azure VM 对象链接或获取此信息的方法...

我必须解决备份方面有点类似的情况,我使用以下方法实现了它:

Get-AzRecoveryServicesBackupStatus -Name $vmname -ResourceGroupName $rg -Type "AzureVM"

$container = (Get-AzRecoveryServicesBackupContainer -ContainerType "AzureVM" -Status "Registered" -VaultId $VaultID | where-object {$_.FriendlyName -eq $vmname -and $_.ResourceGroupName -eq $rg})

但我找不到任何类似于将 VM 对象或至少将 VM 名称和 RG 名称作为参数的 cmdlet...

  1. 这可以做到吗?
  2. 当您选择时,门户如何链接虚拟机和 ASR 项目从虚拟机仪表板进行灾难恢复?

最佳答案

遗憾的是没有直接的方法来解决这个问题。我已在 Azure-Powershell Github 中报告了这一点。

同时,我找到的解决方案是:

  1. 循环访问每个恢复服务保管库
  2. 然后穿过每一种 Fabric
  3. 然后通过每个容器
  4. 然后搜索与您的虚拟机名称匹配的 ProtectedItem.FriendlyName

从性能角度来看,这很糟糕,但这似乎是我目前能找到的解决该问题的唯一方法。

foreach ($Vault in $Vaults) 
{
Set-AzRecoveryServicesAsrVaultContext -Vault $Vault -InformationAction SilentlyContinue
$Fabrics = Get-AzRecoveryServicesAsrFabric
foreach ($Fabric in $Fabrics){
$drContainers = Get-AzRecoveryServicesAsrProtectionContainer -Fabric $Fabric
foreach ($drContainer in $drContainers){
$protectedItem = Get-AzRecoveryServicesAsrReplicationProtectedItem -ProtectionContainer $drContainer -FriendlyName $vm.Name -ErrorAction SilentlyContinue
if ($null -ne $protectedItem){
return $protectedItem
}

}
}
}

关于azure - 是否可以通过编程方式从 Azure VM 获取 ASR Vault Id、结构和容器名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60625988/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com