【发布时间】:2021-07-10 10:32:43
【问题描述】:
我正在尝试在 Azure 自动化帐户的 Runbook 中使用 Start-Sleep/Sleep。我注意到 sleep 命令没有生效,但它在本地生效。进一步的指令继续执行,就好像没有Sleep。我也试过Wait-Event -Timeout。我尝试将命令放入和取出InlineScript 部分。
我错过了什么?只有我面临这个问题吗?
powershell 工作流程如下所示:
workflow W{
Disable-AzureRmTrafficManagerEndpoint..
Start-Sleep -Seconds 5
Stop-AzureWebsiteJob..
Start-Sleep -Seconds 5
Start-AzureWebsiteJob..
Start-Sleep -Seconds 5
Restart-AzureRmWebApp..
Start-Sleep -Seconds 5
Enable-AzureRmTrafficManagerEnpoint..
}
因此,如果没有睡眠,上述指令将被执行。端点被流量管理器禁用和启用,然后我看到 webjob 停止和启动的其他状态。睡眠不生效。
【问题讨论】:
-
这是在工作流的根部,还是在其他块内?如果您发布一个显示问题的示例工作流程,帮助您解决问题会容易得多
-
我添加了一个与我正在做的事情类似的例子。我会在闲暇时尝试一些较长的睡眠时间,比如 Print 1.. sleep for 1000 seconds... Print 2. 我会看看效果如何。
-
你怎么知道没有睡眠发生?您如何准确地观察这一点?如果这是您的确切工作流程代码,我严重怀疑是否有任何理由跳过睡眠。如果您查看 Azure 门户上的作业输出,请记住此输出是缓冲的,因此可能会同时显示所有日志。如果您可以在其间添加带有时间戳的日志记录语句,这可能会有所帮助。
-
谢谢,阿纳托利。我通过记录时间戳检查睡眠是否有效。该工作流对两个端点具有相同的指令集。我在门户中看到一个端点被禁用和启用。第二个端点被禁用。然后与第一个端点对应的 Web 作业显示在 azure 门户中停止或启动。不确定,可能是由于某处的一些延迟。但你是对的。睡眠按预期工作。这完成了这篇文章的目的。我会做一些进一步的调试以获得更多的清晰度。也许我可以尝试在运行手册本身中打印 webjob 状态。
标签: azure powershell sleep azure-automation azure-runbook