Azure customscriptextension无法找到脚本文件

时间:2016-02-11 12:12:39

标签: json azure

我使用Powershell和JSON文件来创建新的VM。 JSON文件的最后一部分指示新创建的VM运行文件。我可以验证(通过Azure门户网站和Powershell)该文件存在于JSON文件中给出的URL。

然而,虚拟机以结果ProvisioningState:Failed结束,因为VM has reported a failure when processing extension 'CustomScriptExtension'. Error message: "Finished executing command"令人沮丧地矛盾。 (我们也遇到了domainjoin CustomScriptExtension的问题,这也是"失败"以及#34;成功"消息。)

该脚本是一个简单的CMD文件,应该创建文件C:\Users\Public\Documents\runonce.log,但这不会发生,所以我猜文件没有运行。

但是,VM已创建,然后我可以手动登录并运行该文件。所以它不应该是用户权限等问题。

编辑: This comment声明" CustomScriptExtension不会与本地管理员权限运行"但我不认为这是问题所在这里。

我错过了什么?

这里是JSON的相关部分:

...
"resources": [
    ...
    {
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "name": "[concat(parameters('vmName'),'/CustomScriptExtension')]",
    "apiVersion": "2015-05-01-preview",
    "location": "[resourceGroup().location]",
    "dependsOn": ["[concat('Microsoft.Compute/virtualMachines/', parameters('vmName'))]"],
    "properties": {
        "publisher": "Microsoft.Compute",
        "type": "CustomScriptExtension",
        "typeHandlerVersion": "1.2",
        "settings": {
            "fileUris": ["[concat(parameters('scriptFilePath'),parameters('scriptFileName'))]"],
            "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -file ',parameters('scriptFileName'))]"
        }
    }
}]

我已验证scriptFilePathscriptFileNamehttps://euwest2766.blob.core.windows.net/script/run-once.cmd,它们对应于Azure中显示的blob网址。我甚至尝试将Azure Blob URL放入JSON中,结果相同。

1 个答案:

答案 0 :(得分:2)

由于您尝试通过Powershell运行批处理文件,因此无法正常工作。

你需要改变这个 -

"commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -file ',parameters('scriptFileName'))]"

到这个

    "commandToExecute": "[concat('cmd /s',parameters('scriptFileName'))]"

应按预期执行。