我一直在使用自定義腳本擴展(.ps1)通過Visual Studio部署我的ARM模板,它實際上也是通過VS編譯的。但是,我一直試圖通過CLI對Azure存儲位置上的.ps1文件進行修改來部署它,以便可以由沒有VS的其他人部署。但是,每次執行部署時都會失敗,該腳本沒有.ps1擴展名的錯誤。通過CLI的Azure ARM模板部署失敗.ps1腳本擴展錯誤
我的ARM模板的自定義腳本擴展部分:
"name": "formatDataDisk",
"type": "extensions",
"location": "[resourceGroup().location]",
"apiVersion": "2016-03-30",
"dependsOn": [
"[resourceId('Microsoft.Compute/virtualMachines', parameters('vmName'))]"
],
"tags": {
"displayName": "formatDataDisk"
},
"properties": {
"publisher": "Microsoft.Compute",
"type": "CustomScriptExtension",
"typeHandlerVersion": "1.4",
"autoUpgradeMinorVersion": true,
"settings": {
"fileUris": [
"https://--MYSTORAGEACCOUNTNAME--.blob.core.windows.net/customscript/formatDataDisk.ps1"
],
"commandToExecute": "powershell.exe -ExecutionPolicy Unrestricted -NoProfile -NonInteractive -File './customscript/formatDatadisk1.ps1'"
},
"protectedSettings": {
"storageAccountName": "--MYSTORAGEACCOUNTNAME--",
"storageAccountKey": "--MYSTORAGEKEY--"
}
在CLI部署它失敗的結尾:
msrest.http_logger : b'{"status":"Failed","error":{"code":"DeploymentFailed","message":"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/arm-debug for usage details.","details":[{"code":"Conflict","message":"{\\r\\n \\"status\\": \\"Failed\\",\\r\\n \\"error\\": {\\r\\n \\"code\\": \\"ResourceDeploymentFailure\\",\\r\\n \\"message\\": \\"The resource operation completed with terminal provisioning state \'Failed\'.\\",\\r\\n \\"details\\": [\\r\\n {\\r\\n \\"code\\": \\"VMExtensionProvisioningError\\",\\r\\n \\"message\\": \\"VM has reported a failure when processing extension \'formatDataDisk\'. Error message: \\\\\\"Finished executing command\\\\\\".\\"\\r\\n }\\r\\n ]\\r\\n }\\r\\n}"}]}}'
msrest.exceptions : At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/arm-debug for usage details.
Deployment failed. {
"status": "Failed",
"error": {
"code": "ResourceDeploymentFailure",
"message": "The resource operation completed with terminal provisioning state 'Failed'.",
"details": [
{
"code": "VMExtensionProvisioningError",
"message": "VM has reported a failure when processing extension 'formatDataDisk'. Error message: \"Finished executing command\"."
}
Azure的門戶網站顯示自定義腳本擴展此錯誤:
[
{
"code": "ComponentStatus/StdOut/succeeded",
"level": "Info",
"displayStatus": "Provisioning succeeded",
"message": ""
},
{
"code": "ComponentStatus/StdErr/succeeded",
"level": "Info",
"displayStatus": "Provisioning succeeded",
"message": "Processing -File ''./customscript/formatDatadisk1.ps1'' failed because the file does not have a '.ps1' extension. Specify a valid Windows PowerShell script file name, and then try again."
}
]
我曾嘗試:
- 「commandToExecute」: 「powershell.exe -ExecutionPolicy無限制-NoProfile -nonInteractive - 文件formatDatadisk1.ps1」
- 「typeHandlerVersion」: 「1.9」
- 重新上傳文件到新的存儲位置,更改子文件夾路徑&訪問密鑰
- 我的腳本似乎符合; https://docs.microsoft.com/en-us/azure/virtual-machines/windows/extensions-customscript
任何指導意見將非常感激
我在我的實驗室測試,我認爲根本原因是你應該刪除''''命令。 'powershell.exe -ExecutionPolicy Unrestricted -NoProfile -onInteractive -File。/ customscript/formatDatadisk1.ps1' –