1

I'm writing a PowerShell script for starting MySQL Server process, initiating backups from Azure Recovery Services, then starting MySQL Server process again.

For my purposes Wait-AzRecoveryServicesBackupJob cmdlet is not suitable, as Azure Backup always takes 10 minutes to take a snapshot and takes 3-24 hours to transfer that snapshot to Vault. How can I wait only until snapshot is taken? enter image description here

WinBoss
  • 879
  • 1
  • 17
  • 40

1 Answers1

1

You will need to set up your own polling loop, but unfortunately the Get-AzRecoveryServicesBackupJob doesn't have the properties you need. There are two options available to you in Powershell-- the REST API or the CLI.

Once you've gotten the job info, you can find the individual tasks under properties.extendedInfo.tasksList

Implementing this under the CLI would look something like this:

$resourceGroup = "resourceGroup"
$vaultName = "vaultName"

$jobs = az backup job list --resource-group $resourceGroup --vault-name $vaultName --start-date 28-8-2020 | convertfrom-json
$jobName = $jobs[0].name

$jobStatus = az backup job show --name $jobName --resource-group $resourceGroup --vault-name $vaultName
$taskStatus = $jobStatus.properties.extendedInfo.tasksList | Where-Object { $_.taskId -eq "Take Snapshot"}
While ( $taskStatus.status -ne Completed ) {
     Write-Host -Object "Waiting for completion..."
     Start-Sleep -minutes 1
     $jobStatus = az backup job show --name $jobName --resource-group $resourceGroup --vault-name $vaultName
     $taskStatus = $jobStatus.properties.extendedInfo.tasksList | Where-Object { $_.taskId -eq "Take Snapshot"}
}
Write-Host -Object "Done!"
PerfectlyPanda
  • 3,271
  • 1
  • 6
  • 17
  • 1
    You can actually use `Get-AzRecoveryServicesBackupJobDetail`, which also gives you the status of subtasks. – trogper Feb 23 '22 at 19:16