首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Power Bi订阅

Power Bi订阅
EN

Stack Overflow用户
提问于 2021-03-23 21:31:17
回答 1查看 143关注 0票数 0

我想在power shell命令中运行power bi订阅。我对这个订阅概念还很陌生。有人能对此给出清晰的解释吗?提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-03-24 15:26:25

不能以编程方式触发e-mail subscriptions。他们正在按照他们的时间表跑步。但是您可以使用Export to File API将报告导出为PDF文件(或其他supported file type)并将其发送给某人。这意味着工作空间必须附加到专用容量(Power BI Premium P SKU, Power BI Premium EM SKUPower BI Embedded A SKU,可能还有Premium per user),并且您应该自己维护“订阅者”列表。

下面是一些使用Power BI Management CmdLets的PowerShell代码,它会将报告导出为PDF并通过电子邮件发送。您需要编辑代码开头的参数,如报告ID、工作区ID、凭据、收件人等。

代码语言:javascript
复制
#############################################################
# Install-Module -Name MicrosoftPowerBIMgmt
# Install-Module -Name MicrosoftPowerBIMgmt -Scope CurrentUser
#############################################################
Import-Module MicrosoftPowerBIMgmt

#############################################################
# Power BI settings
#############################################################
$password = "SuperStrongPassword" | ConvertTo-SecureString -asPlainText -Force
$username = "account@example.com" 

#############################################################
# Report settings
#############################################################
$groupId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
$reportId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
$format = "PDF" # or PNG, or PPTX. For paginated reports can be CSV, DOCX, IMAGE (i.e. page definition plus file format - BMP, EMF, etc.), MHTML, XLSX or XML
$saveToFolder = "D:\"
$fileSuffix = " (" + (Get-Date).ToString("yyyy-MM-dd HH-mm-ss") + ")"


#############################################################
# E-mail settings
#############################################################
$emailSmtpServer = "smtp.office365.com"
$emailSmtpServerPort = 587
$emailTo = $username
$emailSubject = "Here is your report"
$emailBodyHtml = "Please find <b>your report</b> attached here."
$emailUser = "account@example.com"
$emailPassword = "SuperStrongPassword"
$emailFrom = $emailUser


$credential = New-Object System.Management.Automation.PSCredential($username, $password)

Connect-PowerBIServiceAccount -Credential $credential



$settings = @{ includeHiddenPages = $false; locale = "en-us" }
$powerBIReportConfiguration = @{ settings = $settings }
$export_body = @{ format = $format; powerBIReportConfiguration = $powerBIReportConfiguration }
#'{
#  format: "$format",
#  powerBIReportConfiguration: { settings: { includeHiddenPages: false, locale: "en-us" } }
#}'

$export_response = Invoke-PowerBIRestMethod -Url "https://api.powerbi.com/v1.0/myorg/groups/$groupId/reports/$reportId/ExportTo" -Method Post -Body ($export_body | ConvertTo-Json)

$export_response_json = ConvertFrom-Json $export_response

$exportId = $export_response_json.id

Write-Output "Polling export status..."
$maxPollCount = 500
$exportSucceeded = $false
do
{
    $maxPollCount = $maxPollCount - 1

    Start-Sleep -Seconds 5

    $status_response = Invoke-PowerBIRestMethod -Url "https://api.powerbi.com/v1.0/myorg/groups/$groupId/reports/$reportId/exports/$exportId" -Method Get

    $status_response_json = ConvertFrom-Json $status_response
    $status = $status_response_json.status
    $percentComplete = $status_response_json.percentComplete

    Write-Output "Status: $status, percent complete: $percentComplete (retries left: $maxPollCount)"

    if ($status -eq "Succeeded")
    {
        $exportSucceeded = $true
        $resourceLocation = $status_response_json.resourceLocation
        $reportName = $status_response_json.reportName
        $resourceFileExtension = $status_response_json.resourceFileExtension
        $outFile = [IO.Path]::Combine($saveToFolder, $reportName + $fileSuffix + $resourceFileExtension)
    }
}
until($exportSucceeded -or $maxPollCount -le 0)


Write-Output "Downloading export..."
$download_response = Invoke-PowerBIRestMethod -Url $resourceLocation -Method Get -OutFile $outFile
Write-Output "Download completed."


Disconnect-PowerBIServiceAccount


$emailCredentials = New-Object System.Management.Automation.PSCredential -ArgumentList $emailUser, $($emailPassword | ConvertTo-SecureString -AsPlainText -Force)

Send-MailMessage -From $emailFrom `
    -To $emailTo `
    -Subject $emailSubject `
    -Body $emailBodyHtml `
    -BodyAsHtml `
    -SmtpServer $emailSmtpServer `
    -Credential $emailCredentials `
    -UseSsl `
    -Attachments $outFile 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66764205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档