Проверьте, включено ли резервное копирование в vm, если не включите (Azure) - PullRequest
0 голосов
/ 27 мая 2020

Я создаю 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, оно просто пропустило бы его. Приведенная ниже команда распечатает результаты резервного копирования (true или false), но я не знаю, как реализовать это в операторе if, поэтому, если результаты будут ложными, он запустит блок сценария, и если результат будет истинным, он будет просто пропустить и распечатать $ vm.Name уже настроено для Azure резервного копирования.

Get-AzRecoveryServicesBackupStatus -Name 'VmName' -ResourceGroupName 'RgName' -Type AzureVM

Результаты command

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"
}

Итак, какие-нибудь советы, как это сделать? Можно как-то так: if (Get-AzRecoveryServicesBackupStatus -Name 'vmanme' -ResourceGroupName 'rgname' -Type AzureVM backedup -match false)?

1 Ответ

0 голосов
/ 27 мая 2020

Вы можете использовать команду Get-AzRecoveryServicesBackupStatus в операторе if, как показано ниже, чтобы проверить, является ли 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"
}
...