我已经使用Azure VM的vhd在Azure上创建了VMSS。

如何将VMSS的源vhd更改为新的vhd?

得到以下错误:
powershell - 更新Azure VM ScaleSet的VHD-LMLPHP

最佳答案

我们可以使用Update-AzureRmVmssUpdate-AzureRmVmssInstance升级VMSS实例。

如果要使用自定义镜像来升级Azure VMSS实例,则应确保此VMSS通过自定义镜像创建。

如果我们从Azure市场创建VMSS,则无法使用自定义镜像来升级Azure VMSS实例。

这是我的测试:

1.我通过自定义镜像创建VMSS,并使用VMSS template创建它(托管磁盘)。

powershell - 更新Azure VM ScaleSet的VHD-LMLPHP

2,创建另一个VM镜像,并使用此脚本获取$ vmss,并使用Powershell升级VMSS实例:

$rgname = "vmsss"
$vmssname = "jasonvmss"
$instanceid = "1"
$newimagereference = "/subscriptions/5384xxxx-xxxx-xxxx-xxxx-xxxxe29axxxx/resourceGroups/jasonwin/providers/Microsoft.Compute/images/myImage"
$vmss = Get-AzureRmVmss -ResourceGroupName $rgname -VMScaleSetName $vmssname
$vmss.virtualMachineProfile.storageProfile.imageReference.id = $newImageReference
Update-AzureRmVmss -ResourceGroupName $rgname -Name $vmssname -VirtualMachineScaleSet $vmss
Update-AzureRmVmssInstance -ResourceGroupName $rgname -VMScaleSetName $vmssname -InstanceId $instanceId

这是我的截图:

powershell - 更新Azure VM ScaleSet的VHD-LMLPHP

我们还可以找到VMSS实例的状态:

powershell - 更新Azure VM ScaleSet的VHD-LMLPHP

因此,作为一种解决方法,我们可以使用模板或PowerShell使用自定义镜像创建Azure VMSS ,然后使用此脚本升级Azure VMSS实例。

注意:在我的测试中,我使用模板创建VMSS是托管磁盘,因此我们应该使用$vmss.virtualMachineProfile.storageProfile.imageReference.id
如果创建的VMSS是非托管磁盘,则应使用此$vmss.virtualMachineProfile.storageProfile.osDisk.image.uri= $newURI

这是有关升级VMSS实例的官方文章,请引用it

07-24 22:32