在Azure中部署Web角色会在CurrentAccountStorageName上引发异常

时间:2014-01-30 22:50:28

标签: powershell azure azure-web-roles cmdlets

我想使用PowerShell CmdLets将Web角色部署到Azure。

我的脚本如下:

$subscription = "<name-of-subscription>"
$service = "<name-of-cloudservice>"
$slot = "staging"
$package = "path\to\package.cspkg"
$configuration = path\to\config.cscfg"
$deploymentLabel = "Deploy to $service"

Import-Module "C:\Program Files (x86)\Microsoft SDKs\Windows Azure\PowerShell\Azure\Azure.psd1"
Import-AzurePublishSettingsFile "C:\path-to.publishsettings"
Set-AzureSubscription -CurrentStorageAccount $service -SubscriptionName $subscription

# some more stuff to check whether to upgrade or to create ...

Set-AzureDeployment -Upgrade -Slot $slot -Package $package -Configuration $configuration -label $deploymentLabel -ServiceName $service -Force

执行此操作时会抛出错误:

Exception: The subscription named <name-of-subscription> already exists.

我认为,因为我导入了我的publishsettings文件,所以我可以摆脱Set-AzureSubscription。但是,一旦我这样做,我得到下一个错误:

Exception: CurrentStorageAccountName is not set. 
Use Set-AzureSubscription subname -CurrentStorageAccountName storageaccount to set it. 

这是首先给我错误的行,所以我不确定如何设置storageaccountname而不会导致错误。

我也进行了一些测试:

Import-AzurePublishSettingsFile "C:\path-to.publishsettings"

Get-AzureSubscription | Format-Table

一旦我这样做,我得到以下输出(重新格式化):

SubscriptionName:        <name-of-subscription>
SubscriptionId:          123456789-123...
ServiceEndpoint:         https://man....
ActiveDirectoryEndpoint:  
ActiveDirectoryTenantId:
IsDefault:               True 
Certificate              [Subject]
CurrentStorageAccountName 
CurrentCloudStorageAccount 
ActiveDirectoryUserId

如您所见,CurrentStorageAccountName为空,但我不知道如何将其设置为正确的值。

我查了一些其他脚本,但他们似乎都有这个导入序列,然后设置。知道为什么这不起作用以及如何解决它?

4 个答案:

答案 0 :(得分:1)

您正在尝试将CurrentStorageAccount设置为您的cloudservice的名称,但您应该将其设置为blob存储帐户的名称。获取存储帐户列表

PS U:\>Get-AzureStorageAccount |select StorageAccountName 

StorageAccountName
------------------
portalvhdsgsomething
storage1
storage2
storage3

然后运行您之前失败的行,但使用您的存储帐户的名称即。

Set-AzureSubscription -CurrentStorageAccount storage2 -SubscriptionName $subscription

您可以使用

确认更改
PS U:\>Get-AzureSubscription | select CurrentStorageAccount

CurrentStorageAccount      : storage2

答案 1 :(得分:0)

您需要使用-CurrentStorageAccountName作为Set-AzureSubscription的参数。

答案 2 :(得分:0)

对于Set-AzureSubscription,MSDN文档将-SubscriptionName参数显示为参数1,而不是命名。错误消息的建议修复甚至暗示您需要执行Set-AzureSubscription <service> -CurrentStorageAccount <storage solution>或许只是移动它将解决它?

Set-AzureSubscription -SubscriptionName $subscription -CurrentStorageAccount $service

参考:http://msdn.microsoft.com/en-us/library/dn495189.aspx

答案 3 :(得分:0)

我找到了原因。您似乎无法将订阅名称包含为命名参数。改变这一行:

Set-AzureSubscription -CurrentStorageAccount $service -SubscriptionName $subscription

到这一行做了伎俩

Set-AzureSubscription $subscription -CurrentStorageAccount $service