Powershell说存储帐户不存在

时间:2016-09-09 10:31:30

标签: powershell azure azure-storage azure-powershell

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

var $document = document.querySelector("body");

document.addEventListener('load', function(evt) {
    var $script = document.querySelector("script[src='myResource.js']");

    if (!evt.target.isEqualNode($script) {
        return;
    }

    // Callback code
}, true);

结果

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"

被困了很长一段时间。我基本上想编写一个shellcript来从现有的操作系​​统光盘创建一个VM。我设法使用powershell创建现有光盘的副本(使用第一个命令的上下文使其工作)。但现在我正在尝试使用以下方法创建VM配置:

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

我收到此错误:

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

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

3 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

如果您将其创建为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模型,或者需要使用经典模型创建新的存储帐户。

编辑: 忘记提到新的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/