我正在尝试从托管的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
}
答案 0 :(得分:0)
大多数代码都是正确的,我只需要建议您转而使用Az module。但是最后一个while循环,这不是正确的逻辑。正确的逻辑是获取最新状态列表:
from math import sqrt
并且您应该在复制之前停止VM。