我正在编写一个 PowerShell 脚本来启动 MySQL 服务器进程,从 Azure 恢复服务启动备份,然后再次启动 MySQL 服务器进程。
出于我的目的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!"