Я разрабатываю сценарий для копирования дисков данных с одной виртуальной машины Azure на другую виртуальную машину Azure.Ниже приведено задание:
- Создание SNAPSHOTS существующих дисков с данными из исходной виртуальной машины
- Создание новых DATADISKS из SNAPSHOTS, созданных из шага 1
- Присоедините новые DATADISKS кцелевая ВМ
Я написал полный код.Однако на шаге 3 выдается ошибка.
## Create Snapshot from a Managed Disk ##
$resourceGroupName = 'manju_copy_disk'
$location = 'east us 2'
$source_vm_name = 'server1'
$destination_vm_name = 'server3'
$source_vm_object = get-azurermvm -ResourceGroupName $resourceGroupName -Name $source_vm_name
$data_disk_list = Get-AzureRmDisk | where {$_.ManagedBy -match $source_vm_name -and $_.OsType -eq $null}
$snapshot_list = New-Object System.Collections.ArrayList($null)
foreach($data_disk_list_iterator in $data_disk_list){
$snapshotName = $destination_vm_name + "_Snapshot_" + $data_disk_list_iterator.Name
$snapshot_config = New-AzureRmSnapshotConfig -SourceUri $data_disk_list_iterator.id -Location $location -CreateOption copy
$snapshot_object = New-AzureRmSnapshot -Snapshot $snapshot_config -SnapshotName $snapshotName -ResourceGroupName $resourceGroupName
$snapshot_list.Add($snapshot_object.Id)
}
## Create Managed disk from snap shot created above ##
$storageType = 'StandardLRS'
$count=0
$destination_datadisk_list = New-Object System.Collections.ArrayList($null)
#$destination_datadisk_Name_list = New-Object System.Collections.ArrayList($null)
foreach($snapshot_list_iterator in $snapshot_list){
$disk_name = $destination_vm_name + "_datadisk_" + $count
$count += 1
$diskConfig = New-AzureRmDiskConfig -AccountType $storageType -Location $location -CreateOption Copy -SourceResourceId $snapshot_list_iterator
$datadisk_object = New-AzureRmDisk -Disk $diskConfig -ResourceGroupName $resourceGroupName -DiskName $disk_name
$destination_datadisk_ID_list.Add($datadisk_object.Id)
}
## Attach Managed disk to destination vm
$destination_vm_object = Get-AzureRmVM -Name $destination_vm_name -ResourceGroupName $resourceGroupName
$lun_count = 1
foreach($destination_datadisk_list_iterator in $destination_datadisk_list){
$destination_datadisk_name = $destination_vm_name + "_datadisk_"+$lun_count
$destination_vm_object = Add-AzureRmVMDataDisk -VM $destination_vm_object -Name $destination_datadisk_name -CreateOption Attach -ManagedDiskId $destination_datadisk_list_iterator -Lun $lun_count
$lun_count += 1
}
Update-AzureRmVM -VM $destination_vm_object -ResourceGroupName $resourceGroupName ## --> LINE CODE NOT WORKING
Ниже приведена ошибка:
Update-AzureRmVM : Changing property 'dataDisk.name' is not allowed.
ErrorCode: PropertyChangeNotAllowed
ErrorMessage: Changing property 'dataDisk.name' is not allowed.
StatusCode: 409
ReasonPhrase: Conflict
OperationID : e8a0a8de-0cdd-4ba0-90bc-883d37e374af
At line:1 char:1
+ Update-AzureRmVM -VM $destination_vm_object -ResourceGroupName $resou ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (:) [Update-AzureRmVM], ComputeCloudException
+ FullyQualifiedErrorId : Microsoft.Azure.Commands.Compute.UpdateAzureVMCommand