Scripts de PowerShell para exportar informes de Power BI a PBIX/PDF/PPT

Un usuario Pregunto ✅

Recientemente trabajé en un problema de un cliente y tuve la oportunidad de escribir los siguientes scripts para exportar informes de Power BI a PDF/PPT/PBIX y enviarlos como un archivo adjunto de correo electrónico.

Referencia: https://powerbi.microsoft.com/en-us/blog/export-report-to-pdf-pptx-and-png-files-using-power-bi-rest…

Puntos a tener en cuenta al trabajar con PowerShell:

  • Siempre use Módulos actualizados para los cmdlets que se usan en su secuencia de comandos.
  • Ejecute PowerShell como administrador y ejecute el script. Además, utilice la aplicación de 64 bits.
  • Los cambios recientes con TLS podrían generar errores al conectarse a Power BI mediante el cmdlet Connect-PowerBIServiceAccount.
  • Verifique la versión de TLS en la máquina en la que estamos ejecutando los scripts: https://powerbi.microsoft.com/en-us/blog/deprecating-tls-1-0-and-1-1-support-in-power -bi/

****************Script para exportar el informe PBI a PPT/PDF***********************
API utilizada: https://docs.microsoft.com/en-us/rest/api/power-bi/reports/exporttofileingroup

Este Script ayudará a exportar el informe y luego enviarlo como un archivo adjunto. Estamos usando ‘Sendgrid’ aquí para enviar el correo electrónico, también podemos usar el servidor de intercambio.
# Autor: Anamika

# Fecha: 20/06/2020

$authUrl=»https://login.microsoftonline.com/98————–43a5ccb4/oauth2/token»;

$clienteId=»682—————–8a243ec3″

$clientesecreto = «hHX————-9WI20oyI»

#Esta es la ubicación a la que finalmente se exporta el archivo. Puede cambiar esta ubicación.

$Carpeta=»c:miarchivo»

$cuerpo = @{

‘grant_type’ = ‘client_credentials’;

‘recurso’ = ‘https://analysis.windows.net/powerbi/api’;

‘id_cliente’ = $id_cliente;

‘cliente_secreto’ = $clientesecreto;

};

$authResponse = Invoke-RestMethod -Uri $authUrl –Method POST -Body $body

$pbireportId = «a342———–2384fd60a1»

$IDGrupo = «f00————b5c88f»

$restURL = «https://api.powerbi.com/v1.0/myorg/groups/$groupID/reports/$pbireportId/ExportTo»

$encabezados = @{

«Tipo de contenido» = «aplicación/json»;

«Autorización» = $authResponse.token_type + » » + $authResponse.access_token

}

$cuerpo = «{`»formato`»:`»pdf`»}»

$cuerpo

$output= Invoke-RestMethod -Uri $restURL -headers $headers -Method POST -Body $body

$fileid=$salida.id

$restURL01 = «https://api.powerbi.com/v1.0/myorg/groups/$groupID/reports/$pbireportId/Exports/$fileid»

$estadoarchivo = «»;

Hacer

{

Salida de escritura «Esperando que la exportación esté disponible»

$filestatus=Invoke-RestMethod -Uri $restURL01 -headers $headers -Método GET

$estadoarchivo=$estadoarchivo.estado

$estadoarchivo

Inicio-Sueño -Segundos 20

}

Mientras ($filestatus -ne «Exitoso»)

inicio-sueño -Segundos 20

$restURL03 = «https://api.powerbi.com/v1.0/myorg/groups/$groupID/reports/$pbireportId/Exports/$fileid/file»

$test=Invoke-RestMethod -Uri $restURL03 -headers $headers -Method GET -OutFile $Folder»new.pdf»

$SMTPServer = «smtp.sendgrid.net»

$PuertoSMTP = «587»

$nombre de usuario = «azure_36—————-837960d7@azure.com»

$Contraseña = «p——123»

$a = «xyz@microsoft.com»

$cc = «abc@microsoft.com»

$subject = «Exportado un archivo de PowerBI Report con éxito»

$cuerpo = «Exportado un archivo de PowerBI Report con éxito»

$archivo adjunto =$Carpeta + «nuevo.pdf»

$mensaje = Nuevo-Objeto System.Net.Mail.MailMessage

$mensaje.asunto = $asunto

$mensaje.cuerpo = $cuerpo

$mensaje.a.añadir($a)

$mensaje.cc.add($cc)

$mensaje.de = $nombre de usuario

$mensaje.archivos adjuntos.add($archivo adjunto)

$smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort);

$smtp.EnableSSL = $true

$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password);

$smtp.send($mensaje)

host de escritura «Correo enviado»

************* secuencia de comandos para exportar el informe de Power BI en formato PBIX *****************

API utilizada: https://docs.microsoft.com/en-us/rest/api/power-bi/reports/exportreportingroup
# Autor: Anamika

# Fecha: 20/06/2020

$authUrl=»https://login.microsoftonline.com/98c45f19——–97d943a5ccb4/oauth2/token»;

$clientId=»6822cdb7——a370-e9c68a243ec3″

$clientesecreto = «hHXz_———zg-TH9WI20oyI»

$cuerpo = @{

‘grant_type’ = ‘client_credentials’;

‘recurso’ = ‘https://analysis.windows.net/powerbi/api’;

‘id_cliente’ = $id_cliente;

‘cliente_secreto’ = $clientesecreto;

};

$authResponse = Invoke-RestMethod -Uri $authUrl –Method POST -Body $body

$pbireportId = «a342151a——-aaf2-302384fd60a1»

$groupID = «f00cdaa7——–bf50-455bdcb5c88f»

salida de escritura «Iniciando exportación»

$RestURL = «https://api.powerbi.com/v1.0/myorg/groups/$groupID/reports/$pbireportId/Exportar»

$encabezados = @{

«Tipo de contenido» = «aplicación/json»;

«Autorización» = $authResponse.token_type + » » + $authResponse.access_token

}

$output= Invoke-RestMethod -Uri $restURL -headers $headers -Method GET -OutFile «C:myfileana.pbix»

*********************** Finaliza el guión ************************

La autenticación también se puede realizar a través de la ID de la aplicación y el secreto del cliente, en lugar de utilizar la cuenta de usuario para iniciar sesión. Podemos usar el siguiente código para lograrlo:

$authUrl=»https://login.microsoftonline.com/98c45f19——–97d943a5ccb4/oauth2/token»;

$clientId=»6822cdb7——a370-e9c68a243ec3″

$clientesecreto = «hHXz_———zg-TH9WI20oyI»

$cuerpo = @{

‘grant_type’ = ‘client_credentials’;

‘recurso’ = ‘https://analysis.windows.net/powerbi/api’;

‘id_cliente’ = $id_cliente;

‘cliente_secreto’ = $clientesecreto;

};

$authResponse = Invoke-RestMethod -Uri $authUrl –Method POST -Body $body

Autor: Anamika Goswami

Crítico: Mounika Narayana Reddy

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *