【问题标题】:Powershell saying storage account doesn't existPowershell说存储帐户不存在
【发布时间】:2017-01-17 11:36:15
【问题描述】:

在 powershell 中,我通过调用上下文来验证它是否存在。

New-AzureStorageContext -StorageAccountName "testdisks401" -StorageAccountKey "...."

结果

StorageAccountName : testdisks401
BlobEndPoint       : https://testdisks401.blob.core.windows.net/
TableEndPoint      : https://testdisks401.table.core.windows.net/
QueueEndPoint      : https://testdisks401.queue.core.windows.net/
FileEndPoint       : https://testdisks401.file.core.windows.net/
Context            : Microsoft.WindowsAzure.Commands.Common.Storage.AzureStorageContext
Name               :
StorageAccount     : BlobEndpoint=https://testdisks401.blob.core.windows.net/;QueueEndpoint=https://testdisks401.queue.core.windows.net/;TableEndpoint=https://testdi
                 sks401.table.core.windows.net/;FileEndpoint=https://testdisks401.file.core.windows.net/;AccountName=testdisks401;AccountKey=[key hidden]
EndPointSuffix     : core.windows.net/

当我尝试在此处设置时:

Set-AzureSubscription -SubscriptionName 'XXXX' -CurrentStorageAccount "testdisks401"

我明白了

Set-AzureSubscription : ResourceNotFound: The storage account 'testdisks401' was not found.
At line:1 char:1
+ Set-AzureSubscription -SubscriptionName 'XXX
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : CloseError: (:) [Set-AzureSubscription], CloudException
+ FullyQualifiedErrorId : Microsoft.WindowsAzure.Commands.Profile.SetAzureSubscriptionCommand

卡了好久。我基本上想编写 shellscript 来从现有的操作系​​统光盘创建一个虚拟机。我设法使用 powershell 创建了现有光盘的副本(使用第一个命令的上下文使其工作)。但现在我正在尝试使用以下方法创建 VM 配置:

 $vmI1 = New-AzureVMConfig -Name "TestRecover" -InstanceSize Small -AvailabilitySetName 'RDGW' -DiskName 'MY-OS-Disk-Name'

我收到此错误:

New-AzureVMConfig : Must specify MediaLocation or set a current storage account using Set-AzureSubscription.
At line:1 char:9
+ $vmI1 = New-AzureVMConfig -Name "TestRecover" -InstanceSize Small -Av ...
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [New-AzureVMConfig], ArgumentException
+ FullyQualifiedErrorId : System.ArgumentException,Microsoft.WindowsAzure.Commands.ServiceManagement.IaaS.NewAzureVMConfigCommand

已经为此提供了solution,这将我带到了这里(卡在缺少存储帐户错误)。

【问题讨论】:

  • 请检查您使用的存储帐户是Classic 存储帐户还是Azure Resource Manager 存储帐户。我的猜测是 cmdlet Set-AzureSubscription 使用其中一种类型,而您的存储帐户是另一种类型。
  • @GauravMantri 存储帐户是 Azure 资源管理器类型。我不相信 Set-AzureSubscription 区分类型。据我所知,它的文档没有提到这种情况 (msdn.microsoft.com/library/dn790376.aspx)
  • 或者我认为不是这样。我创建了一个经典的存储帐户来测试,情况就是这样。这很奇怪。 @GauravMantri 请添加它作为我接受的答案

标签: powershell azure azure-storage azure-powershell


【解决方案1】:

Set-AzureSubscription Cmdlet 期望通过-CurrentStorageAccount 参数指定的存储帐户是经典存储帐户。

请确保您指定的是经典存储帐户的名称,而不是资源管理器存储帐户的名称。

【讨论】:

    【解决方案2】:

    如果您需要使用 ARM 创建的存储帐户,则可以使用以下命令:

    $SubscriptionName = "MySubscription"
    $StorageAccountName = "MyStorage"
    $ResourceGroup = "MyResourceGroup"
    Get-AzureRmSubscription –SubscriptionName $SubscriptionName | Select-AzureRmSubscription
    Get-AzureRmStorageAccount -AccountName $StorageAccountName -ResourceGroupName $ResourceGroup
    $key = (Get-AzureRmStorageAccountKey -AccountName $StorageAccountName -ResourceGroupName $ResourceGroup).Key1
    $Ctx = New-AzureStorageContext –StorageAccountName $StorageAccountName -StorageAccountKey $key
    

    【讨论】:

    • 是的,我使用这个 ctx 变量然后作为命令 Set-​Azure​Subscription 的输入 .. 我仍然得到相同的错误,因为找不到存储帐户。我真的很想看到这适用于基于 ARM 的模型!
    • 人们可能会错过的一件非常重要的事情是存储帐户名称需要小写。每一个字母。可能是因为命名约定根本没有创建存储帐户。你能检查一下是不是这样。另外,如果我能看到一些脚本 sn-p,我可以提供更多帮助。我亲自使用过上面的脚本,它确实有效。
    • 在获得 ctx 后,我执行了第 1 步。Set-AzureSubscription -SubscriptionId 4ceb426a-1203-4adb-dc2-b95a372a9e0 -Context $Ctx 步骤 2。Add-AzureVhd –Destination -LocalFilePath D: \azure.VHD 步骤 2 在 shell 上出现以下错误: Add-AzureVhd : ResourceNotFound: The storage account 'vmrg001disks388' was not found。 CloudException + FullyQualifiedErrorId : Hyak.Common.CloudException,Microsoft.WindowsAzure.Commands.ServiceManagement.StorageServices.AddAzureVhdCommand
    • 我确实设置了 $StorageAccountName = "vmrg001disks388" .. 所有小写字母
    • 啊..有你的问题。当我在这方面工作时,这让我很沮丧。 Azure 资源分为经典和 ARM。您正在使用经典命令,并且您的存储帐户很可能在 ARM 中。如果您看到我的命令,它使用的是 Select-AzureRmSubscription 而不是 Set-AzureSubscription。此外,Add-AzureVhd 具有替代的 Add-AzureRmVhd。检查此链接docs.microsoft.com/en-us/powershell/module/azurerm.compute/…
    【解决方案3】:

    您是如何创建该存储帐户的?

    如果您将其创建为 RM 帐户,则可以解释您遇到的错误。 Antohter 选项是 testdisks401 与您尝试设置的订阅相同。

    尝试执行以下操作:

    Set-AzureSubscription -SubscriptionName 'XXXX'
    Get-AzureStorageAccount | ft StorageAccountName
    

    这将为您提供 XXXX 订阅中的经典存储帐户(非 RM)列表。

    然后对 RM 帐户执行相同操作,如下所示:

    Login-AzureRmAccount -SubscriptionName 'XXXX'
    Get-AzureRMStorageAccount | ft StorageAccountName
    

    如果 testdisks401 帐户在 RM 列表中,那么您需要切换到 RM 模型,或者您需要使用经典模型创建一个新的存储帐户。

    编辑: 忘了提到 new-azurestoragecontext,不验证任何东西。尝试运行以下命令:

    New-AzureStorageContext -StorageAccountName "bla" -StorageAccountKey "askjlksdfjldskgfjflkjdsflksj"
    

    它还会为您提供一个不错的上下文对象,但无处可去:

    StorageAccountName : bla
    BlobEndPoint       : https://bla.blob.core.windows.net/
    TableEndPoint      : https://bla.table.core.windows.net/
    QueueEndPoint      : https://bla.queue.core.windows.net/
    FileEndPoint       : https://bla.file.core.windows.net/
    Context            : Microsoft.WindowsAzure.Commands.Common.Storage.AzureStorageC
    Name               :
    StorageAccount     : BlobEndpoint=https://bla.blob.core.windows.net/;QueueEndpoin
    EndPointSuffix     : core.windows.net/
    

    【讨论】:

      猜你喜欢
      • 2017-06-28
      • 1970-01-01
      • 2019-06-16
      • 2017-06-20
      • 2020-01-13
      • 2021-12-04
      • 1970-01-01
      • 2021-09-21
      • 2020-11-05
      相关资源
      最近更新 更多