Powershell 说存储帐户不存在

Powershell saying storage account doesn't exist

在 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 从现有的 OS 光盘创建一个 VM。我设法使用 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,这让我来到这里(卡在缺少存储帐户错误上)。

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

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

如果您需要使用 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

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

如果您将其创建为 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/