将VHD文件从OS-Disk导出到存储帐户

时间:2020-05-14 08:58:54

标签: azure powershell migration storage vhd

我正在尝试从托管的OS磁盘将VHD文件从东南亚导出到美国东部的位置,但出现错误403身份验证失败“读取源时复制失败”。 我是租户和订户所有者的全球管理员。请找到相同的屏幕截图和脚本。

Login-AzureRmAccount
Select-AzureRmSubscription -SubscriptionName "Prod-Sub"
$RGName = "r-d-server-RG-2" 
$DiskName = "r-d-server2-OSDisk-13052020"
$StorageAccount = "migratestorageserver2"
$STGKey = "dgosW21YW1kCyPLfhjf7Qhj14XMvRqqFB9Usp4jnjOPjJLRdwhfqBa3mJxHDnE7i479BUFQSK0vefgv/GKaYUA=="
$ContainerName = "migratecontainer"
$VHDName = "r-d-servermigrated.vhd"
$sas = Grant-AzureRmDiskAccess -ResourceGroupName $RGName -DiskName $DiskName -DurationInSecond 9600 
-Access Read 
$destContext = New-AzureStorageContext –StorageAccountName $StorageAccount -StorageAccountKey $STGKey 
$blob1 = Start-AzureStorageBlobCopy -AbsoluteUri $sas.AccessSAS -DestContainer $ContainerName - 
DestContext $destContext -DestBlob $VHDName


#Retrieve the current status of the blob copy operation
$status = $blob1 | Get-AzureStorageBlobCopyState  

#Print out status  
$status  

#Loop until complete                                     

While($status.Status -eq "Pending"){
    $status = $blob1 | Get-AzureStorageBlobCopyState
    Start-Sleep 10
    ### Print out status ###
    $status
}

1 个答案:

答案 0 :(得分:0)

大多数代码都是正确的,我只需要建议您转而使用Az module。但是最后一个while循环,这不是正确的逻辑。正确的逻辑是获取最新状态列表:

from math import sqrt

并且您应该在复制之前停止VM。