2

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

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

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

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

taskType设置background为。

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

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

好乱。

所以这让我想,如果我可以在开始我的任务之前等待所有其他任务执行,它将消除这些类型的问题

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

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

~编辑~

我在这里读到有关 powershell 不存在的错误可能是由于在 Visual Studio 中将批处理文件保存为 UTF-8 引起的。我在记事本++中从头开始重写它并确保它保存为ANSI。然后,同样的错误。完整的信息是:

'PowerShell' 不是内部或外部命令、可运行程序或批处理文件。

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

4

2 回答 2

0

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

从链接的答案:

用你的 VS 2012 Ultimate 打开你的whatever.cmd 文件。单击文件->将whatever.cmd另存为->在对话框中[保存]按钮旁边有一个小箭头。它将显示一个菜单,其中包含“使用编码保存”选项。

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

于 2014-11-14T19:02:12.200 回答
0

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

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

于 2012-08-04T17:51:14.107 回答