我使用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'))]"
}
}
}]
我已验证scriptFilePath
和scriptFileName
是https://euwest2766.blob.core.windows.net/script/
和run-once.cmd
,它们对应于Azure中显示的blob网址。我甚至尝试将Azure Blob URL放入JSON中,结果相同。
答案 0 :(得分:2)
由于您尝试通过Powershell运行批处理文件,因此无法正常工作。
你需要改变这个 -
"commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -file ',parameters('scriptFileName'))]"
到这个
"commandToExecute": "[concat('cmd /s',parameters('scriptFileName'))]"
应按预期执行。