2016-09-09 7 views
2

В powershell я подтверждаю, что она существует, вызывая контекст.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 (используемый контекст из первой команды, чтобы заставить его работать). Но теперь, когда я пытаюсь создать конфигурацию виртуальной машины с помощью этого:

$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 уже предусмотрен для этого, который привел меня сюда (застрял на недостающем хранении ошибка учетной записи).

+1

Пожалуйста, проверьте, если учетная запись для хранения вы используете это 'счет хранения Classic' или 'Аккаунт хранилища Azure Resource Manager'. Я предполагаю, что в командлете 'Set-AzureSubscription' используется один из типов, а ваша учетная запись хранилища имеет другой тип. –

+0

@GauravMantri Учетная запись хранилища - это тип менеджера ресурсов Azure. Я не считаю, что Set-AzureSubscription различает типы. В его документации не упоминается такой случай, насколько мне известно (https://msdn.microsoft.com/library/dn790376.aspx) –

+0

Или я не думаю, что это так. Я создал классическую учетную запись хранилища для тестирования, и это было так. Это очень странно. @GauravMantri Пожалуйста, добавьте его в качестве ответа для меня, чтобы принять –

ответ

5

Set-AzureSubscription Cmdlet ожидает, что учетная запись хранения, указанная с помощью параметра -CurrentStorageAccount, станет классической учетной записью хранилища.

Убедитесь, что вы указали имя учетной записи классического хранилища, а не имя учетной записи хранилища диспетчера ресурсов.

+0

, как это можно сделать для учетной записи хранилища на основе RM? – k2ibegin

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 
+0

не работает для меня – k2ibegin

+0

Вы получаете ошибку? –

+0

Да, я использую эту переменную ctx, а затем в качестве ввода команды Set-Azure Subscription .. и до сих пор получаю ту же ошибку, что и учетная запись хранилища. Мне бы очень хотелось увидеть, что это работает на основе ARM-модели! – k2ibegin

1

Как вы создали эту учетную запись для хранения?

Если вы создали его как учетную запись RM, которая объяснила бы ошибку, которую вы получаете. Опция Antohter заключается в том, что testdisks401 находится на той же подписке, которую вы пытаетесь установить.

Попробуйте сделать следующее:

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

это поможет вам список классических счетов для хранения (не RM) в подписке XXXX.

А затем сделать то же самое для 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/