【问题标题】:VSTS Azure powershell : No default subscription has been designatedVSTS Azure powershell:未指定默认订阅
【发布时间】:2017-02-07 21:16:50
【问题描述】:

我正在尝试运行一些 azure powershell 命令,作为我使用 Azure 资源管理器构建的 Visual Studio Team Services 的一部分。

它给了我以下错误:

没有指定默认订阅。使用 Select-AzureSubscription -Default 设置默认订阅。

我正在尝试运行的命令:

$website = Get-AzureWebsite | where {$_.Name -eq 'my-website'}
Write-Output ("##vso[task.setvariable variable=DeployUrl;]$website.HostNames")

当我尝试在本地运行它时,我不得不调用

Add-AzureAccount
Select-AzureRmSubscription -SubscriptionName "Visual Studio Premium with MSDN"

让它工作,但在 VSTS 构建中是不可能的。

更新:

我已将其配置为使用 azure 经典模式而不是资源管理器,它可以正常工作。我不认为这是一个可行的生产解决方案,因为 azure 经典模式已过时。

【问题讨论】:

  • Get-AzureWebSite 是 cmdlet 的“经典”版本,因此需要经典身份验证。 Get-AzureRmWebApp,是资源管理器 cmdlet。
  • 谢谢!您能否添加一个答案以便我接受?
  • 你可以参考Eddie的回答。
  • 是的,我认为 Eddie 也涵盖了它 - 如果有什么可以澄清的 lmk...

标签: powershell azure azure-devops azure-powershell


【解决方案1】:

感谢您的提问。

如果您使用的是服务管理器模式(经典模式),正确的 cmdlet 是:
Add-AzureAccount
Get-AzureSubscription -SubscriptionName “名称” |选择-AzureSubscription

如果您使用的是资源管理器,正确的 cmdlet 是:
Login-AzureRmAccount
Get-AzureRmSubscription –SubscriptionName "名称" |选择-AzureRmSubscription

或者只使用 -SubscriptionId 而不是 -SubscriptionName。

更多关于ASM和ARM的信息,请参考以下链接:
https://azure.microsoft.com/en-us/documentation/articles/resource-manager-deployment-model/

如果您仍有疑问,欢迎在此处回复。谢谢。

【讨论】:

  • 是否可以在同一个版本定义中同时使用两者?例如,如果我想运行一些 ARM 模板,则调用 Publish-AzureWebsiteProject 之类的东西是一个 ASM cmdlet。在调用 ASM cmdlet 之前调用 Select-AzureSubscription 会导致 The subscription id x... doesn't exist
【解决方案2】:

由于您使用的是 Azure 资源管理器,请检查以下内容:

  1. 确保正确添加“Azure 资源管理器”服务端点。
  2. 如 bmoore 所述,使用“Get-AzureRmWebApp”命令代替“Get-AzureWebsite”命令。

我已经在我身边测试过,它可以正常工作。

我的 PowerShell 脚本:

$website = Get-AzureRmWebApp | where {$_.Name -eq 'eddieapp0930'}
Write-Host $website.HostNames

从“Azure PowerShell 脚本”任务运行:

【讨论】:

    猜你喜欢
    • 2018-01-26
    • 2015-07-06
    • 2015-10-24
    • 2018-06-14
    • 2017-05-19
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    • 2022-11-01
    相关资源
    最近更新 更多