如何更改Add-Blob Azure cmdlet的超时值?

时间:2012-10-19 14:54:18

标签: powershell azure azure-storage cmdlets

我正在尝试调用Add-Blob Azure cmdlet

Add-Blob -BlobType Block -FilePath $packagePath -ContainerName $blobContainerName

它一直工作到最近,但现在它失败了

Operation could not be completed within the specified time.

消息。我怀疑无论出于何种原因,上传速度都非常低,因此无法快速上传文件。

是否可以增加该操作的超时值?

1 个答案:

答案 0 :(得分:2)

您使用的是http://wappowershell.codeplex.com的Cmdlet吗?请注意,这些cmdlet现在(已经过)已弃用,已被Windows Azure管理Cmdlet(http://msdn.microsoft.com/en-us/library/windowsazure/jj554330.aspx)取代。不幸的是,新cmdlet中没有添加blob的cmdlet。

回到你的问题,我认为不可能使用此Cmdlet指定请求超时,并且CodePlex站点上没有可用的源代码供您修改。您可以做的是直接通过PowerShell调用Storage Client库。我冒昧地修改了这篇博文(http://www.fsmpi.uni-bayreuth.de/~dun3/archives/uploading-a-file-to-azure-blob-storage-from-powershell/528.html)中的代码,并在那里包含了对Timeout参数的支持:

    Add-Type -Path "C:\Program Files\Microsoft SDKs\Windows Azure\.NET SDK\2012-06\ref\Microsoft.WindowsAzure.StorageClient.dll"

    $accountName = "<your account name>";

    $accountKey = "<your account key>";

    $blobContainerName = "<your blob container name>";

    $fullFilePath = "<Full path of the file you wish to upload>";

    $requestTimeoutInSeconds = 600;

    $cloudStorageAccountNameAndKey = new-object Microsoft.WindowsAzure.StorageCredentialsAccountAndKey($accountName, $accountKey);

    $cloudStorageAccount = new-object Microsoft.WindowsAzure.CloudStorageAccount($cloudStorageAccountNameAndKey, $true);

    $cloudBlobClient = [Microsoft.WindowsAzure.StorageClient.CloudStorageAccountStorageClientExtensions]::CreateCloudBlobClient($cloudStorageAccount)

    $blobContainer = $cloudBlobClient.GetContainerReference($blobContainerName);

$blobContainer.CreateIfNotExist();

    $blockBlob = $blobContainer.GetBlockBlobReference("<blob name>");

    $blobRequestOptions = new-object Microsoft.WindowsAzure.StorageClient.BlobRequestOptions;

    $blobRequestOptions.Timeout = [TimeSpan]::FromSeconds($requestTimeoutInSeconds);

    $blockBlob.UploadFile($fullFilePath, $blobRequestOptions);

如果你正在寻找微软PowerShell Cmdlet的替代方案,我建议你看看Cerebrata Azure Management Cmdlets [我是这个产品的开发者之一]。它具有用于完整存储管理和服务管理的cmdlet。

希望这有帮助。