public override void ExecuteCmdlet() { CloudStorageAccount account = null; bool useHttps = (StorageNouns.HTTPS.ToLower() == protocolType.ToLower()); switch (ParameterSetName) { case AccountNameKeyParameterSet: account = GetStorageAccountByNameAndKey(StorageAccountName, StorageAccountKey, useHttps, storageEndpoint); break; case AccountNameKeyEnvironmentParameterSet: account = GetStorageAccountByNameAndKeyFromAzureEnvironment(StorageAccountName, StorageAccountKey, useHttps, environmentName); break; case ConnectionStringParameterSet: account = GetStorageAccountByConnectionString(ConnectionString); break; case LocalParameterSet: account = GetLocalDevelopmentStorageAccount(); break; case AnonymousParameterSet: account = GetAnonymousStorageAccount(StorageAccountName, useHttps, storageEndpoint); break; case AnonymousEnvironmentParameterSet: account = GetAnonymousStorageAccountFromAzureEnvironment(StorageAccountName, useHttps, environmentName); break; default: throw new ArgumentException(Resources.DefaultStorageCredentialsNotFound); } AzureStorageContext context = new AzureStorageContext(account); WriteObject(context); }
/// <summary> /// Start copy operation by source uri /// </summary> /// <param name="srcICloudBlob">Source uri</param> /// <param name="destContainer">Destinaion container name</param> /// <param name="destBlobName">Destination blob name</param> /// <returns>Destination ICloudBlob object</returns> private ICloudBlob StartCopyBlob(string srcUri, string destContainer, string destBlobName, AzureStorageContext context) { if (context != null) { Uri sourceUri = new Uri(srcUri); Uri contextUri = new Uri(context.BlobEndPoint); if (sourceUri.Host.ToLower() == contextUri.Host.ToLower()) { CloudBlobClient blobClient = context.StorageAccount.CreateCloudBlobClient(); ICloudBlob blobReference = blobClient.GetBlobReferenceFromServer(sourceUri); return StartCopyBlob(blobReference, destContainer, destBlobName); } else { WriteWarning(String.Format(Resources.StartCopySourceContextMismatch, srcUri, context.BlobEndPoint)); } } CloudBlobContainer container = destChannel.GetContainerReference(destContainer); return StartCopyInTransferManager(new Uri(srcUri), container, destBlobName); }