我使用 PowerShell 和 ARM JSON 模板找到了解决方法(我使用的是 Powershell 版本5.1
)。在您commandToExecute
的virtualMachineProfile
json 模板中,指定一个几乎总是更改的值,它将强制命令在每次部署模板时重新执行以运行。您将在我的模板中看到我添加:' -Date ', deployment().name
到commandToExecute
. 的值deployment().name
在我的New-AzureRmResourceGroupDeployment
命令中指定为:
-Name $($(Get-Date -format "MM_dd_yyyy_HH_mm"))
部署名称基于日期和时间,每分钟不同。
PowerShell 命令:
New-AzureRmResourceGroupDeployment -ResourceGroupName $ResourceGroupName -TemplateFile $PathToJsonTemplate -TemplateParameterFile $PathToParametersFile -Debug -Name $($(Get-Date -format "MM_dd_yyyy_HH_mm")) -force
我的脚本中的自定义脚本扩展部分virtualMachineProfile
如下所示(注意commandToExecute
):
"virtualMachineProfile": {
"extensionProfile": {
"extensions": [
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "MyExtensionName",
"location": "[parameters('location')]",
"properties": {
"publisher": "Microsoft.Compute",
"type": "CustomScriptExtension",
"typeHandlerVersion": "1.8",
"autoUpgradeMinorVersion": true,
"settings": {
"fileUris": [
"[concat(parameters('customScriptExtensionSettings').storageAccountUri, '/scripts/MyScript.ps1')]"
],
"commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File MyScript.ps1', ' -Date ', deployment().name)]"
},
"protectedSettings": {
"storageAccountName": "[parameters('customScriptExtensionSettings').storageAccountName]",
"storageAccountKey": "[listKeys(variables('accountid'),'2015-05-01-preview').key1]"
}
}
},
这将允许您更新已部署的虚拟机规模集上的自定义脚本扩展。我希望这有帮助!