我的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'未被识别为内部或外部命令, 可操作程序或批处理文件。
同样,脚本可以从远程桌面的命令行中完美运行。
答案 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”。