对于某些特定目的,我需要在实例上安装一些字体。当我选择StartUp Task来实现这一目标时,这并不令人惊讶。我已将服务定义配置如下:Azure:无法启动云服务运行vbs启动任务
<Startup>
<Task commandLine="Fonts\InstallFonts.vbs" executionContext="elevated" taskType="simple" />
</Startup>
这里没什么特别的。点击并运行,失败。但是,如果我将commandLine更改为只包含无意义的cmd文件,即“回显测试”,则该实例将不会运行。因此,必须有一些问题,我的脚本:
Const FONTS = &H14&
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(CreateObject("Scripting.FileSystemObject").GetAbsolutePathName("."))
Set fontFolder = objShell.Namespace(FONTS)
Set rxTTF = New RegExp
rxTTF.IgnoreCase = True
rxTTF.Pattern = "\.ttf$"
Set fso = CreateObject("Scripting.FileSystemObject")
FOR EACH FontFile IN objFolder.Items()
IF rxTTF.Test(FontFile.Path) THEN
IF NOT fso.FileExists(fontFolder.Self.Path+"\\"+FontFile.Name) THEN
FontFile.InvokeVerb("Install")
END IF
END IF
NEXT
脚本应该都没有错误,因为我已经测试它在本地或在Azure上通过RDP。
奇怪的是,当我把它放在启动时,角色就不会启动。该实例只是继续回收,最后说“我不健康”。即使我将vbs弃于一行代码中 - 第一行Const FONTS = & H14 &,它只是不会启动。即使我将vbs的调用包装到一个cmd文件中,也就是放入“cscript/B file.vbs”之类的东西,它也不会运行。
所以,我得出结论,必须有一些关于脚本和Windows Azure监视器之间的通信问题。我不确定,但我认为显示器可能会将运行脚本视为失败的任务。此外,我想知道启动任务是否有超时,但这应该是问题,因为脚本可以保证没有UI交互阻止进程。
任何想法将不胜感激。
很高兴!它是解决:) –