问题描述
我正在编写一个PowerShell脚本,用于启动MysqL Server进程,从Azure恢复服务启动备份,然后再次启动MysqL Server进程。
出于我的目的,Wait-AzRecoveryServicesBackupJob
cmdlet不适合,因为Azure备份总是需要10分钟来拍摄快照,并且需要3-24小时才能将该快照传输到Vault。我如何只能等到拍摄快照后才能进行拍摄?
解决方法
您将需要设置自己的轮询循环,但是不幸的是Get-AzRecoveryServicesBackupJob
没有所需的属性。在Powershell中,您可以使用两个选项-REST API或CLI。
获得工作信息后,您可以在properties.extendedInfo.tasksList
下找到各个任务
在CLI下实施此操作看起来像这样:
$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!"