为什么我的Azure Powershell runbook在作为计划执行时会挂起?如何防止重试?

为什么我的Azure Powershell runbook在作为计划执行时会挂起?如何防止重试?,powershell,azure,google-drive-api,azure-runbook,Powershell,Azure,Google Drive Api,Azure Runbook,我对Azure Automation Runbook非常陌生,但我一直在编写一个powershell脚本,该脚本将SQL Azure数据库备份到bacpac文件中的blob存储容器中,然后将其上载到Google Drive进行“异地”备份。我在一个月前就实现了此功能,Microsoft无意中终止了我的Azure订阅,我无法访问我的数据库备份,因为它们是帐户的一部分 在编写脚本之后,我成功地使用了测试特性,该特性出色地完成了任务。随后,我配置了一个每日计划,该计划将在夜间执行备份。第二天早上,我发

我对Azure Automation Runbook非常陌生,但我一直在编写一个powershell脚本,该脚本将SQL Azure数据库备份到bacpac文件中的blob存储容器中,然后将其上载到Google Drive进行“异地”备份。我在一个月前就实现了此功能,Microsoft无意中终止了我的Azure订阅,我无法访问我的数据库备份,因为它们是帐户的一部分

在编写脚本之后,我成功地使用了测试特性,该特性出色地完成了任务。随后,我配置了一个每日计划,该计划将在夜间执行备份。第二天早上,我发现备份功能工作顺利,文件确实已发布到Google Drive,但有三份副本。Azure门户将该作业标记为“暂停”,我被告知该作业失败并重试了3次

我读过Invoke WebRequest,怀疑它正在超时,尽管文档表明默认行为是不超时。其他建议是使用“内联”脚本,但我认为这只适用于工作流运行手册,而不是我的特定脚本运行手册

我认为失败的命令是:

Write-Verbose "Uploading database to google drive using a timeout of 600 seconds..."
$uploadrequest = Invoke-WebRequest -method Post -uri $GUploadURI -body $GUploadBody -Headers $Guploadheaders -usebasicparsing -TimeoutSec 600
Write-Verbose "Uploaded database to google drive." 
但我没有接到错误通知。日志显示runbook写入了详细的行“将数据库上载到google drive…”,之后似乎返回到开头并再次重复2次

timeoutsec是作为一个试验引入的,目的是看看我是否可以覆盖超时特性(尽管我猜这就是问题所在)。日志中没有显示随后的详细消息“Upload database to google drive”,因此很明显,由于某种原因,WebRequest失败了

作为进一步的信息,我被迫将数据库中的blob内容读入本地临时文件,然后将其读入内存,以便以多部分消息的形式发布到Google。目前数据库的大小为16个字节。这可能是个问题,因为我被告知Runbook对内存分配非常严格

Write-Verbose "Creating temporary file for blob content..."
$file = New-TemporaryFile
Write-Verbose "Downloading blob content to temporary file..." 
$blob = Get-AzureStorageBlobContent -Container $container -Blob $blob -Context $storageContext -Destination $file -Force
Write-Verbose "Extracting file content as RAW"
$togoogle = Get-Content $file -Raw -ErrorAction:SilentlyContinue

如果您能给我一些建议,告诉我该怎么做,以及如何防止重试,我将不胜感激,因为我也可以在powershell runbook中看到如何配置它。

当我被同样的问题难倒时,我发现了以下几点:

这个答案已经很晚了,但希望它能帮助下一个像我一样搜索的人