public override void ExecuteCmdlet()
        {
            SetUpDestinationChannel();

            ICloudBlob destinationBlob = default(ICloudBlob);

            switch (ParameterSetName)
            {
            case NameParameterSet:
                destinationBlob = StartCopyBlob(SrcContainer, SrcBlob, DestContainer, DestBlob);
                break;

            case UriParameterSet:
                destinationBlob = StartCopyBlob(AbsoluteUri, DestContainer, DestBlob, Context);
                break;

            case SrcBlobParameterSet:
                destinationBlob = StartCopyBlob(ICloudBlob, DestContainer, DestBlob);
                break;

            case ContainerPipelineParameterSet:
                destinationBlob = StartCopyBlob(CloudBlobContainer.Name, SrcBlob, DestContainer, DestBlob);
                break;

            case DestBlobPipelineParameterSet:
                destinationBlob = StartCopyBlob(ICloudBlob, DestICloudBlob);
                break;
            }

            if (destinationBlob != null)
            {
                AccessCondition    accessCondition = null;
                BlobRequestOptions options         = null;
                //Make sure we use the dest channel
                destChannel.FetchBlobAttributes(destinationBlob, accessCondition, options, OperationContext);
                AzureStorageBlob azureBlob = new AzureStorageBlob(destinationBlob);
                //Make sure the dest context is piped out
                azureBlob.Context = DestContext;
                WriteObject(azureBlob);
            }
        }