Azure启动任务,等待所有其他任务完成

时间:2012-08-03 19:41:58

标签: deployment azure startup

我的webrole有一个启动任务,从blob下载一些可执行文件,然后继续安装。

从.cmd文件,我启动一个下载文件的power shell脚本,然后从.cmd启动文件。

如果我在发布完成后通过RDP手动运行脚本,该脚本可以正常工作。

但是,当作为启动脚本运行时,它有时(经常)在不同的点上失败。

taskType设置为background

上次错误是命令PowerShell不存在......

此外,我在运行PS脚本之前使用powershell -command set-executionpolicy unrestricted,但我读了here其他任务可能会重置此设置并使我失败。

相当混乱。

所以这让我觉得如果我可以在开始我的任务之前等待所有其他任务,那就可以消除这些问题

我想我可以检查某个进程是否正在运行并等待它完成,但我不知道要检查的进程。

或许还有另一种解决方案。

〜编辑

我读了here关于PowerShell不存在的错误可能是由于批处理文件在visual studio中保存为UTF-8引起的。我在记事本++中从头开始重新编写它,并确保它保存为ANSI。然后,同样的错误。完整的信息是:

  

'PowerShell'未被识别为内部或外部命令,   可操作程序或批处理文件。

同样,脚本可以从远程桌面的命令行中完美运行。

2 个答案:

答案 0 :(得分:0)

可以在完成所需的脚本末尾设置一个环境变量,然后在等待依赖项的脚本中循环,直到设置环境变量,然后启动它的活动。

您还可以从单个PowerShell脚本运行所有内容,并在安装程序语句中使用“-asjob”开关,使用“wait-job”cmdlet阻止,直到任务完成,然后继续。 Powershell还提供'?!'运算符,确保最后一个语句正确执行。

答案 1 :(得分:0)

这可能是由编码问题引起的。正如this answer中所述,您应该将文件保存在 ASCII 中,以确保正确解释您的脚本。

来自链接的答案:

  

使用VS 2012 Ultimate打开您的whatever.cmd文件。点击File-> Save whatever.cmd as - >在对话框中,[保存]按钮旁边有一个小箭头。它将显示一个菜单,其中包含Save with Encoding选项。

     

选择它。现在从可用编码列表中选择“US-ASCII Codepage 20127”。