我正在构建Azure Runbook(powershell),该命令检查vm是否启用了备份(如果未启用),它将启用它。我在添加和构建IF语句以使其变得更好时遇到问题。
这是我现在执行的方法,它可以工作,但是如果vm已启用备份,则runbook将打印很多红色,那不好。这是较大的runbook的一部分,所有这些都在foreach上运行。
$vault= Get-AzureRmRecoveryServicesVault -ResourceGroupName "RGName" -Name "VaultName"
Set-AzureRmRecoveryServicesVaultContext -Vault $vault
Write-Output "Configuring Azure backup to $($vm.Name)"
$policy = Get-AzureRmRecoveryServicesBackupProtectionPolicy -Name "PolicyName"
Enable-AzureRmRecoveryServicesBackupProtection `
-ResourceGroupName $vm.ResourceGroupName `
-Name $vm.Name `
-Policy $policy
然后,我想在其中添加IF语句,因此,如果在vm上启用了备份,它将跳过它。下面的命令将打印备份的结果(是或否),但是我不知道如何在if语句中实现该结果,因此如果结果为false,它将运行脚本块,如果结果为true,则只会跳过并打印$ vm。名称已配置为Azure备份。
Get-AzRecoveryServicesBackupStatus-名称'VmName'-ResourceGroupName'RgName'-类型AzureVM
if ()
{
$vault= Get-AzureRmRecoveryServicesVault -ResourceGroupName "RgName" -Name "VaultName"
Set-AzureRmRecoveryServicesVaultContext -Vault $vault
Write-Output "Configuring Azure backup to $($vm.Name)"
$policy = Get-AzureRmRecoveryServicesBackupProtectionPolicy -Name "PolicyName"
Enable-AzureRmRecoveryServicesBackupProtection `
-ResourceGroupName $vm.ResourceGroupName `
-Name $vm.Name `
-Policy $policy
}
else {
Write-Output "$vm.Name has already configured to Azure backup"
}
那么有什么技巧吗?我可以这样做吗:如果(Get-AzRecoveryServicesBackupStatus-名称'vmanme'-ResourceGroupName'rgname'-类型AzureVM备份-match false)?
您可以在如下的if语句中使用命令Get-AzRecoveryServicesBackupStatus
来检查是否为BackedUp:
(Get-AzRecoveryServicesBackupStatus -Name 'vmname' -ResourceGroupName 'rgname' -Type AzureVM).BackedUp
如果我们更新您的现有代码,例如如果不存在备份,它将执行备份,否则将显示已经配置了备份:
if (!(Get-AzRecoveryServicesBackupStatus -Name 'vmname' -ResourceGroupName 'rgname' -Type AzureVM).BackedUp) {
$vault= Get-AzureRmRecoveryServicesVault -ResourceGroupName "RgName" -Name "VaultName"
Set-AzureRmRecoveryServicesVaultContext -Vault $vault
Write-Output "Configuring Azure backup to $($vm.Name)"
$policy = Get-AzureRmRecoveryServicesBackupProtectionPolicy -Name "PolicyName"
Enable-AzureRmRecoveryServicesBackupProtection `
-ResourceGroupName $vm.ResourceGroupName `
-Name $vm.Name `
-Policy $policy
} else {
Write-Output "$vm.Name has already configured to Azure backup"
}