0

创建将按需复制数据库的 azure 自动化 Runbook 时遇到问题;我创建了一个凭证并将我用来登录门户的帐户的 u/p 存储在其中。密码写在记事本中并粘贴以确保正确。

$Cred = Get-AutomationPSCredential -Name 'automationCredential'

Write-Output "UN: $($Cred.Username)"
Write-Output "PW: $($Cred.Password.Length)"

Add-AzureRmAccount -Credential $Cred

Write-Output "Deleting the old $TargetDatabaseName"

Remove-AzureRMSqlDatabase -ResourceGroupName "Default-SQL-NorthEurope" -ServerName $SourceServerName -DatabaseName $TargetDatabaseName -Force

Write-Output "Creating new $TargetDatabaseName with data at time $PointInTime"

New-AzureRmSqlDatabaseCopy `
    -CopyDatabaseName $TargetDatabaseName `
    -DatabaseName $SourceDatabaseName `
    -ResourceGroupName "Default-SQL-NorthEurope" `
    -ServerName $SourceServerName

调试打印似乎表明凭据是正确的,但是执行 add-azurermaccount 时,似乎登录但没有返回订阅

删除旧测试数据库的调用失败后不久:

Remove-AzureRMSqlDatabase :在上下文中找不到订阅。请确保您提供的凭据有权访问 Azure 订阅,然后运行 ​​Login-AzureRMAccount 登录。

如果我在命令行 powershell 中执行这些操作(唯一的区别是我在没有参数的情况下调用登录;它会提示输入凭据),那么一切都会很好

我发现一些资源表明信用是否错误,它会进行身份验证但不返回任何订阅 - 我已经仔细检查了信用并且它们是准确的

4

1 回答 1

1

在 Azure 中,Microsoft 帐户不支持交互式登录。
如果您想在 Runbook 中使用脚本登录 Azure,我们可以创建一个服务主体来登录 Azure。

我们可以使用 powershell 创建 Azure 服务主体,有关服务主体的更多信息,请参阅此链接


我们可以使用服务主体登录 Azure powershell,如下所示:

$subscriptionId="5384xxxx-xxxx-xxxx-xxxx-xxxxe29axxxx"
$tenantid="1fcf418e-66ed-4c99-9449-d8e18bf8737a"
$appid="1498b171-e1ca-451f-9d7a-8ef56a178b89" 
$password="7db814b1-xxxx-4654-xxxx-1d210cb546f9"
$userPassword = ConvertTo-SecureString -String $password -AsPlainText -Force
$userCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $clientid, $userPassword
Add-AzureRmAccount -TenantId $tenantid -ServicePrincipal -SubscriptionId $subscriptionId -Credential $userCredential 

在此处输入图像描述在此处输入图像描述

关于创建服务主体,我们可以使用 CLI 2.0 来创建,如下所示:

az login

az account set --subscription "mySubscriptionID"

az group create -n "myResourceGroupName" -l "westus"

az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName"

在此处输入图像描述

于 2017-07-11T00:57:06.867 回答