#api #automation #powerbi #runbook
#API #автоматизация #powerbi #runbook
Вопрос:
Мы успешно выполняем приведенный ниже код на сервере домена, используя обычный PowerShell. Однако, когда мы выполняем этот код PowerShell в Azure Automation Runbook, мы получаем сообщение «Приостановленное задание runbook было предпринято 3 раза, но каждый раз это не удавалось».
Мы не можем использовать участника-службу, поскольку вы не можете выполнить ни один из API-интерфейсов администратора из участника-службы. Итак, нам нужно использовать обычную учетную запись пользователя для входа в API Power BI.
Есть идеи, как заставить этот код работать в Runbook?
$UserName = 'user01@sample.com'
$User_Password = 'xx@#xsrasda!@W12'
$User_Password_Secure = ConvertTo-SecureString -AsPlainText $User_Password -Force
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $UserName,
Connect-PowerBIServiceAccount -Credential $Credential
if($SuppressErrors -eq $false)
{
Resolve-PowerBIError -Last
}
Invoke-PowerBIRestMethod -Method Get -Url 'admin/reports'
Disconnect-PowerBIServiceAccount
Ответ №1:
Я рекомендую эту статью Герхарда Брюкля, в которой показано, как использовать метод Invoke-RestMethod для обхода командлетов Power BI. Это единственный способ, который я нашел, чтобы заставить Azure runbook работать. Он также предоставляет рабочий образец.
Ваш код будет выглядеть примерно так. Однако обратите внимание, что вам нужно будет создать регистрацию приложения Azure и использовать этот идентификатор клиента. Есть мастер для создания этого в https://dev.powerbi.com/apps .
$body = @{
"resource" = "https://analysis.windows.net/powerbi/api";
"client_id" = $clientId;
"grant_type" = "password";
"username" = $UserName ;
"password" = $User_Password;
"scope" = "openid"
}
$resp = Invoke-RestMethod -Uri $authUrl -Method POST -Body $body
$authHeaders = @{
"Content-Type" = "application/json";
"Authorization" = $authResponse.token_type " " $authResponse.access_token
}
Invoke-RestMethod -Method Get -Headers $authHeaders "https://api.powerbi.com/v1.0/myorg/admin/reports"