【问题标题】:How do I change the timeout value for Add-Blob Azure cmdlet?如何更改 Add-Blob Azure cmdlet 的超时值?
【发布时间】:2012-10-10 05:22:57
【问题描述】:

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

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

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

Operation could not be completed within the specified time.

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

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

【问题讨论】:

    标签: powershell azure azure-storage cmdlets


    【解决方案1】:

    您是否使用来自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。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-07
      • 2023-03-31
      • 2015-05-21
      • 1970-01-01
      • 1970-01-01
      • 2020-12-01
      • 2021-10-14
      • 2021-08-08
      相关资源
      最近更新 更多