【问题标题】:Get-AzureStorageBlob throws Can not find your azure storage credentialGet-AzureStorageBlob 抛出找不到您的 Azure 存储凭据
【发布时间】:2013-09-18 16:51:04
【问题描述】:

我刚刚开始使用 Azure,但在使用 PowerShell cmdlet 处理我的存储帐户时遇到了问题。

我已在该存储帐户中创建了一个存储帐户和一个容器。接下来,我安装了 Azure Powershell SDK 和命令让等,并导入了 publishsettings 文件。当我执行 Get-AzureSubscription 或 Get-AzureStorageAccount 命令时,它会在 PowerShell 控制台中正确显示我的订阅以及各种存储端点。

但是,如果我执行 Get-AzureStorageBlob 调用或 Set-AzureStorageBlobContent,则会收到以下错误

Get-AzureStorageBlob : Can not find your azure storage credential. Please set current storage account using
"Set-AzureSubscription" or set the "AZURE_STORAGE_CONNECTION_STRING" environment variable.

我在这里简直是束手无策。对此错误字符串的 Google 搜索只会显示对 Github 等代码的引用。非常感谢一些帮助。

【问题讨论】:

    标签: powershell azure azure-blob-storage


    【解决方案1】:

    是的,所以我终于设法做到了!以下是有关如何使用 PowerShell 在 Azure 中创建 blob 并在其中存储文件的总体详细信息。

    http://www.nikgupta.net/2013/09/azure-blob-storage-powershell/

    $context = New-AzureStorageContext -StorageAccountName FunkyStorage -StorageAccountKey {Enter your storage account key here}
    
    Set-AzureStorageBlobContent -Blob "MyFunkyBlob" -Container FunkyContainer-File "c:\temp\1.txt" -Context $context -Force
    

    【讨论】:

    • 当我尝试这个时,我得到以下结果。知道如何避免吗? Microsoft.PowerShell.Utility\Write-Error:无法绑定参数“上下文”。无法将“Deserialized.Microsoft.WindowsAzure.Commands.Storage.Model.ResourceModel.AzureStorageContext”类型的“Microsoft.WindowsAzure.Commands.Storage.Model.ResourceModel.AzureStorageContext”值转换为“Microsoft.WindowsAzure.Commands.Storage.Model”类型.ResourceModel.AzureStorageContext"。
    • 在 Internet 上的快速搜索将其指向与访问相关或与网络相关的问题。这有帮助吗robertsmit.wordpress.com/2014/06/16/…
    • 使用$localStorageContext = New-AzureStorageContext -Local 处理您的本地开发存储。
    【解决方案2】:

    您可能需要设置要使用的“当前”订阅。为此,您必须运行 Select-AzureSubscription

    如果您运行Get-AzureSubscription,您将在发布设置中看到所有订阅。这些订阅之一应设置为默认值。当您滚动浏览结果列表时,您会看到每个订阅的一个属性 IsDefault 设置为 TrueFalse。如果您使用的订阅设置为False,请运行:

    Select-AzureSubscription -SubscriptionName mysub

    希望能解决您遇到的问题。

    【讨论】:

    • 谢谢大卫。我也试过了,但没有运气。实际上,我最终找到了做到这一点的方法。应在博客上发布并在此处发布链接以尽快帮助其他人!
    【解决方案3】:

    仅供参考:您可以另一种方式(更快的方式)执行此操作。我在 Windows PowerShell 上构建了一种与 Azure 高度集成的 Web 语言。它叫做PowerShell Pipeworks

    您可以使用 4 个 cmdlet 与 blob 交互:

    • 获取 Blob
    • 导入 Blob
    • 导出 Blob
    • 删除-Blob

    全部采用 -StorageAccount 和 -StorageKey,以及 -StorageAccountSetting 和 -StorageKeySetting。您可以将凭据保存到磁盘(或使用 Add-SecureSetting 在 Web 应用程序中使用)。一旦任何 blob cmdlet 拥有存储帐户,它将继续重复使用它。

    Export-Blob 也很方便,您可以通过管道将目录传递给它,它会创建正确的内容类型,并提供 -Public,它将存储它的容器标记为公共。

    这些 cmdlet 比 Azure 的要早(约 3 个月),但执行时间仍然是 3/4 左右(我相信其中很大一部分是它们对凭据的查找速度较慢),值得一试.

    【讨论】:

    • 谢谢。您可以将此作为评论留在博客上,以便我也可以修改我的帖子并将您的链接合并到那里吗?
    猜你喜欢
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    相关资源
    最近更新 更多