我想使用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
为空,但我不知道如何将其设置为正确的值。
我查了一些其他脚本,但他们似乎都有这个导入序列,然后设置。知道为什么这不起作用以及如何解决它?
答案 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
答案 3 :(得分:0)
我找到了原因。您似乎无法将订阅名称包含为命名参数。改变这一行:
Set-AzureSubscription -CurrentStorageAccount $service -SubscriptionName $subscription
到这一行做了伎俩
Set-AzureSubscription $subscription -CurrentStorageAccount $service