Azure PowerShell Start-AzureAutomationRunbook 未指定默认订阅

Azure PowerShell Start-AzureAutomationRunbook No default subscription has been designated

Azure PowerShell v2.* 在 VSTS 上能够执行

Get-AzureRmResourceGroup

成功 returns 正确的结果...好!这有望证明 VSTS 和 Azure 帐户之间的身份验证按预期工作。

当我尝试以下命令时:

Start-AzureAutomationRunbook -AutomationAccountName "automationaccountname" -Name "RunbookName"

我得到这个:

No default subscription has been designated. Use Select-AzureSubscription -Default <subscriptionName> to set the default subscription.

但是,VSTS 之前已经自动执行了这些命令:

Add-AzureRMAccount -ServicePrincipal -Tenant ******** -Credential System.Management.Automation.PSCredential -EnvironmentName AzureCloud
Select-AzureRMSubscription -SubscriptionId 12345678-1234-1234-1234-1234567890AB -TenantId ********

我不确定我需要执行什么,因为上一个命令已经选择了订阅。有什么线索吗?

事情是这样的。此时有两个适用于 PowerShell 的 Azure 模块。有 Azure 和 AzureRM。 Azure 模块处理 'Classic' 模型资源,而 AzureRM 模块使用 ARM(Azure 资源管理)资源。它们中的每一个都或多或少地彼此独立运作,偶尔会有一些重叠。这里的关键是以 *-AzureRM* 开头的任何内容都与 AzureRM 模块相关。这些 cmdlet 使用来自 Add-AzureRMAccount cmdlet 和 Set-AzureRMContextSelect-AzureRMSubscription 是别名)的登录信息。如果您 运行ning 的命令不是以“*-AzureRM”开头,那么您很可能需要通过 Add-AzureAccount cmdlet 登录经典模块才能执行命令,或者如果您已经这样做了,您可以使用 Select-AzureSubscription cmdlet 简单地指定要使用的订阅。

最有可能的解决方法:仔细检查这是否是经典 运行书籍。如果它没有说经典,请尝试使用 AzureRM 命令:

Start-AzureRmAutomationRunbook -AutomationAccountName "automationaccountname" -Name "RunbookName"

如果这不起作用,那么您需要确保您已登录到经典模块,并且可以看到您的订阅:

Get-AzureSubscription -SubscriptionId 12345678-1234-1234-1234-1234567890AB

如果您可以看到订阅,您可以 运行 同样的事情,只需将其通过管道传输到 Select-AzureSubscription

Get-AzureSubscription -SubscriptionId 12345678-1234-1234-1234-1234567890AB | Select-AzureSubscription

如果您没有看到列出的订阅,您可以使用 Add-AzureAccount cmdlet 使用与该订阅关联的帐户登录到 Azure,然后根据需要重复 Get/Select-Subscription cmdlet。