VSTS Azure powershell:未指定默认订阅
Posted
技术标签:
【中文标题】VSTS Azure powershell:未指定默认订阅【英文标题】:VSTS Azure powershell : No default subscription has been designated 【发布时间】: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... 【参考方案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 资源管理器,请检查以下内容:
-
确保正确添加“Azure 资源管理器”服务端点。
如 bmoore 所述,使用“Get-AzureRmWebApp”命令代替“Get-AzureWebsite”命令。
我已经在我身边测试过,它可以正常工作。
我的 PowerShell 脚本:
$website = Get-AzureRmWebApp | where $_.Name -eq 'eddieapp0930'
Write-Host $website.HostNames
从“Azure PowerShell 脚本”任务运行:
【讨论】:
以上是关于VSTS Azure powershell:未指定默认订阅的主要内容,如果未能解决你的问题,请参考以下文章
Azure Active Directory:使用 PowerShell 将服务主体添加到目录读取者角色
Jenkins中使用Azure Powershell连接Service Fabric报错not recognized的原因与解决办法
VSTS:将构建/发布变量传递到 Powershell 脚本任务