0

我正在尝试调用Add-BlobAzure cmdlet

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

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

Operation could not be completed within the specified time.

信息。我怀疑无论出于何种原因,上传速度都变得非常低,因此它无法足够快地上传文件。

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

4

1 回答 1

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 调用存储客户端库。我冒昧地修改了这篇博客文章中的代码(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);

如果您正在寻找 Microsoft 的 PowerShell Cmdlet 的替代品,我建议您看看Cerebrata Azure Management Cmdlets [我是该产品的开发人员之一]。它具有用于完整存储管理和服务管理的 cmdlet。

希望这可以帮助。

于 2012-10-20T07:41:14.873 回答