Azure Automation – Script de Start e Stop Automático – Power BI Embedded
Pessoal, Tudo bem?
Cenário
Alguns clientes tem se voltado para a implantação do Power BI Embedded em horários apenas administrativos encapsulando seus relatórios em um portal customizado, ou seja, fora do expediente o serviço é paralisado evitando assim cobrança desnecessária para o cliente, isto torna grande a redução de custo e potencializa a utilização do Power BI para muito mais usuários dentro da empresa.
Solução
Esta configuração é realizada via Automation do Azure, criando um runbook com o seguinte código:
workflow PBIEmbedded_StartStop { Param ( [Parameter(Mandatory=$true)] [String] $AzureResourceGroup, [Parameter(Mandatory=$true)] [String] $PowerBIEmbeddedName, [Parameter(Mandatory=$true)] [Boolean] $Suspend ) $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 } } if($Suspend -eq $true ) { try { #Suspending the Service "Suspending $PowerBIEmbeddedName started" $SuspendOperation = Suspend-AzureRmPowerBIEmbeddedCapacity -Name $PowerBIEmbeddedName -ResourceGroupName $AzureResourceGroup -PassThru "$PowerBIEmbeddedName is Suspended Successfully" } catch { Write-Error -Message $_.Exception throw $_.Exception } } else { try { #Resuming the Service "Resuming $PowerBIEmbeddedName" $ResumeOperation = Resume-AzureRmPowerBIEmbeddedCapacity -Name $PowerBIEmbeddedName -ResourceGroupName $AzureResourceGroup -PassThru "$PowerBIEmbeddedName Resumed Successfully " } catch { Write-Error -Message $_.Exception throw $_.Exception } } }
O que pode ocorrer ao você tentar implementar pela primeira vez é o seguinte erro:
Suspend-AzureRmPowerBIEmbeddedCapacity’ is not recognized as the name of a cmdlet + automation
Outro erro comum:
Cannot find the ‘Test-AzureRmPowerBIEmbeddedCapacity’ command. If this command is defined as a workflow, ensure it is defined before the workflow that calls it. If it is a command intended to run directly within Windows PowerShell (or is not available on this system), place it in an InlineScript: ‘InlineScript { Test-AzureRmPowerBIEmbeddedCapacity }’

Para isto, basta você importar os seguintes módulos em sua conta do Automation:
- AzureRM.profile
- AzureRM.PowerBIEmbedded
Eles possibiltam a utilização do cmdlets que o script necessita.
Espero que ajude!
Até breve,
Vithor da Silva e Silva | Consultor e Instrutor | SQL Server e Power BI
vithor@vssti.com.br