monaraya
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
1