Azure Runbook - 在上下文中找不到订阅

时间:2018-03-16 21:18:42

标签: azure azure-powershell azure-runbook

背景:

我正在尝试通过Azure上的Runbook设置脚本。我发现不寻常的是我可以通过Azure Powershell Cloud Shell运行命令并且它可以工作。但是,当我尝试通过Runbook运行它时,我收到一个错误(见下文)。

剧本:

New-AzureRmSqlDatabaseExport : No subscription found in the context.  Please ensure that the credentials you provided 
are authorized to access an Azure subscription, then run Connect-AzureRmAccount to login.
At line:10 char:1
+ New-AzureRmSqlDatabaseExport `
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [New-AzureRmSqlDatabaseExport], ApplicationException
    + FullyQualifiedErrorId : Microsoft.Azure.Commands.Sql.ImportExport.Cmdlet.NewAzureSqlDatabaseExport

**使用的通用值

错误:

select col1, col2, COALESCE(<a fairly complex query>, col2) AS col3 from <a table>

问题:

我做错了什么?我使用的密码和用户名是在其他地方使用的密码和用户名,并且在我运行Cloud Shell中的脚本时工作。另外,“在上下文中找不到订阅”是什么意思

2 个答案:

答案 0 :(得分:1)

这意味着您需要在执行任何操作之前登录Azure。 Cloud Shell为您处理,而Azure自动化不会。

https://docs.microsoft.com/en-us/powershell/azure/get-started-azureps?view=azurermps-5.5.0#log-in-to-azure

您可以使用Azure AD用户登录,证书登录或服务主体登录。真实账户不会起作用,因为它是互动的。

答案 1 :(得分:1)

在Azure Cloud Shell中,您已登录到您的帐户,因此您无需再次登录。但在Runbook中,您需要先登录您的帐户。

您可以使用以下代码登录。

$connectionName = "AzureRunAsConnection"
try
{
    # Get the connection "AzureRunAsConnection "
    $servicePrincipalConnection=Get-AutomationConnection -Name $connectionName         

    "Logging in to Azure..."
    Add-AzureRmAccount `
        -ServicePrincipal `
        -TenantId $servicePrincipalConnection.TenantId `
        -ApplicationId $servicePrincipalConnection.ApplicationId `
        -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint 
}
catch {
    if (!$servicePrincipalConnection)
    {
        $ErrorMessage = "Connection $connectionName not found."
        throw $ErrorMessage
    } else{
        Write-Error -Message $_.Exception
        throw $_.Exception
    }
}

在上面的代码中,您需要使用连接AzureRunAsConnection,它是由Azure默认创建的,您可以直接使用它。

有关此内容的详细信息,您还可以查看此question