2017-04-04 6 views
0

J'essaie de trouver un moyen de copier un disque dur virtuel dans mon compte de stockage dans mon groupe de ressources.Azure Resource Manager .NET SDK, copie de disques durs virtuels/Blobs

J'ai un Sas Uri d'un VHD.

Je Powershell j'utiliser:

Start-AzureStorageBlobCopy ` 
-AbsoluteUri $sas.AccessSAS ` 
-DestContainer 'vhds' -DestContext $destContext -DestBlob 'MyDestinationBlobName.vhd' 

pour le faire.

Je n'arrive pas à trouver un moyen de le faire à partir du SDK .NET d'Azure Resource Manager. https://github.com/Azure/azure-sdk-for-net/tree/AutoRest/src/ResourceManagement/

Y at-il un moyen de copier un blob en utilisant .NET?

Répondre

1

Est-il possible de copier un blob à l'aide de .NET?

Vous devez utiliser Azure Storage SDK for .Net (Github | Nuget).

using Microsoft.WindowsAzure.Storage; 
using Microsoft.WindowsAzure.Storage.Auth; 
using Microsoft.WindowsAzure.Storage.Blob; 

    static void CopyBlobUsingSasExample() 
    { 
     var destinationAccountName = ""; 
     var destinationAccountKey = ""; 
     var destinationAccount = new CloudStorageAccount(new StorageCredentials(destinationAccountName, destinationAccountKey), true); 
     var destinationContainerName = "vhds"; 
     var destinationContainer = destinationAccount.CreateCloudBlobClient().GetContainerReference(destinationContainerName); 
     destinationContainer.CreateIfNotExists(); 
     var destinationBlob = destinationContainer.GetPageBlobReference("MyDestinationBlobName.vhd"); 
     var sourceBlobSasUri = ""; 
     destinationBlob.StartCopy(new Uri(sourceBlobSasUri)); 
     //Since copy operation is async, please wait for the copy operation to finish. 
     do 
     { 
      destinationBlob.FetchAttributes(); 
      var copyStatus = destinationBlob.CopyState.Status; 
      if (copyStatus != CopyStatus.Pending) 
      { 
       break; 
      } 
      else 
      { 
       System.Threading.Thread.Sleep(5000);//Sleep for 5 seconds and then fetch attributes to check the copy status. 
      } 
     } while (true); 
    }