2012-08-03 139 views
2

我有一个启动任务,用于从我的卷轴下载一些可执行文件,然后继续安装。Azure启动任务,等待所有其他任务完成

从.cmd文件中,我启动一个下载文件的Power Shell脚本,然后从.cmd启动该文件。

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

但是,如运行启动脚本时,有时(经常)不能在不同的点。

taskType设置为background

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

另外,我跑我的PS脚本之前使用powershell -command set-executionpolicy unrestricted,但我读here其他任务可以重设此设置,使我的失败。

很乱。

所以这让我觉得,如果我可以等待所有其他任务开始我之前来执行,这将消除这类问题

我想,如果某个进程正在运行,我可以检查并等待它完成,但我没有线索至关重要的过程来检查。

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

〜编辑〜

我读here大约PowerShell中不存在可以通过批处理文件造成的错误被保存在Visual Studio UTF-8。我在记事本++中重新编写它,并确保它保存为ANSI。然后,同样的错误。完整的信息是:

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

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

+0

你可以尝试将你的'taskType'从** simple **改为** ** **吗? RDP通过** background **启用,这可能会导致您遇到此问题。 – SliverNinja 2012-08-03 19:52:01

+0

'taskType'已经设置为'background',我忘了提及它。 – Johnny5 2012-08-03 20:11:21

+0

你在安装什么?它是否将任何功能添加到IIS?有一个称为IISConfigurator.exe的进程引导了IIS,但是我没有足够的上下文来解释你试图用安装程序实现的目标。 – 2012-08-04 17:55:22

回答

0

可以在需要完成的脚本末尾设置环境变量,然后在等待依赖关系的脚本中循环,直到设置了环境变量,然后启动其活动。

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

+0

问题是我无法控制其他任务。例如,远程桌面的设置。这是MS代码。 – Johnny5 2012-08-05 03:19:28

0

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

从链接答案:

与VS 2012终极打开whatever.cmd文件。在对话框中点击File-> Save whatever.cmd as - > [save]按钮旁边的小箭头。它会显示一个菜单,可以选择Save with Encoding选项。

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