對於某些特定目的,我需要在實例上安裝一些字體。當我選擇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交互阻止進程。
任何想法將不勝感激。
很高興!它是解決:) –