If you ever need to copy VHDs between two different storage account, you can use the PowerShell script below to do it in few steps:
Perform the copy
Firstly select the subscription you need to work with.
Select-AzureSubscription "MySubscriptionName" 
Define the source VHD - authenticated container. You can get the vhd name and url from the portal
$srcUri = "https://mysubscription.blob.core.windows.net/vhds/yourvhdname.vhd" 
Define the source Storage Account. This is where the vhd is currently located. The Private key can be acquired from the azure portal
$srcStorageAccount = "sourceStorageAccount"
$srcStorageKey = "GET KEY FROM PORTAL"
Define the destination Storage Account. This is where the vhd will be copied to. Again, the private key can be acquired from the azure portal
$destStorageAccount = "destinationStorageAccount"
$destStorageKey = "GET KEY FROM PORTAL"
Create the source storage account context
$srcContext = New-AzureStorageContext `
	-StorageAccountName $srcStorageAccount `
	-StorageAccountKey $srcStorageKey 
Create the destination storage account context
$destContext = New-AzureStorageContext `
	-StorageAccountName $destStorageAccount `
	-StorageAccountKey $destStorageKey 
Define the destination Container Name
$containerName = "vhds"
Create the container on the destination
New-AzureStorageContainer -Name $containerName -Context $destContext 
Start the asynchronous copy - specify the source authentication with -SrcContext
$blob1 = Start-AzureStorageBlobCopy `
 -srcUri $srcUri `
 -SrcContext $srcContext `
 -DestContainer $containerName `
 -DestBlob "DestinationVhdName.vhd" `
 -DestContext $destContext
Checking the status of the copy
The script below can be used to retrieve the status of the copy operation. First we define a $status variable and then we loop until the status changes to non-pending. This variable is also used to display/print the current status on the console.
Retrieve the current status of the copy operation
$status = $blob1 | Get-AzureStorageBlobCopyState 
Print out status
$status 
While($status.Status -eq "Pending"){
 $status = $blob1 | Get-AzureStorageBlobCopyState 
 Start-Sleep 10
 $status
}
Happy coding...