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/
在 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/