Forum Discussion
Anonymous
4 years agoNot applicable
Powershell script to extract long running refreshes
Hi, I want to extract long running refreshes (status = unknown) and set an alert for these long running refreshes, through powershell as I would like to send an alert to an alert tool we use. As a c...
- Anonymous3 years ago
Hi Anonymous ,
As far as I know, we can set alert for Power BI refreshing failure by Power Shell.
I hope this code could help you.
$myCred = Get-Credential Connect-PowerBIServiceAccount -Credential $myCred $Workspaces = Get-PowerBIWorkspace $ExportFile = 'C:\Users\emeazzo\Desktop\Scripts\PowerBI\PowerShell\RefreshHistory\PowerBiRefreshHistory.csv' Remove-Item $ExportFile -Force -ErrorAction SilentlyContinue foreach($workspace in $Workspaces) { $DataSets = Get-PowerBIDataset -WorkspaceId $workspace.Id | where {$_.isRefreshable -eq $true} foreach($dataset in $DataSets) { $URI = "groups/" + $workspace.id + "/datasets/" + $dataset.id + "/refreshes" #$OutFile = $ExportFolder + '\' + $workspace.Name + '-' + $dataset.Name + '.json' $Results = Invoke-PowerBIRestMethod -Url $URI -Method Get | ConvertFrom-Json foreach($result in $Results.value) { $errorDetails = $result.serviceExceptionJson | ConvertFrom-Json -ErrorAction SilentlyContinue $row = New-Object psobject $row | Add-Member -Name "Workspace" -Value $workspace.Name -MemberType NoteProperty $row | Add-Member -Name "Dataset" -Value $dataset.Name -MemberType NoteProperty $row | Add-Member -Name "refreshType" -Value $result.refreshType -MemberType NoteProperty $row | Add-Member -Name "startTime" -Value $result.startTime -MemberType NoteProperty $row | Add-Member -Name "endTime" -Value $result.endTime -MemberType NoteProperty $row | Add-Member -Name "status" -Value $result.status -MemberType NoteProperty $row | Add-Member -Name "errorCode" -Value $errorDetails.errorCode -MemberType NoteProperty $row | Add-Member -Name "errorDescription" -Value $errorDetails.errorDescription -MemberType NoteProperty $row | Export-Csv -Path $ExportFile -Append -Delimiter ';' -NoTypeInformation } } }For reference:
Best Regards,
Rico ZhouIf this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Anonymous
3 years agoNot applicable
Hi Anonymous ,
As far as I know, we can set alert for Power BI refreshing failure by Power Shell.
I hope this code could help you.
$myCred = Get-Credential
Connect-PowerBIServiceAccount -Credential $myCred
$Workspaces = Get-PowerBIWorkspace
$ExportFile = 'C:\Users\emeazzo\Desktop\Scripts\PowerBI\PowerShell\RefreshHistory\PowerBiRefreshHistory.csv'
Remove-Item $ExportFile -Force -ErrorAction SilentlyContinue
foreach($workspace in $Workspaces)
{
$DataSets = Get-PowerBIDataset -WorkspaceId $workspace.Id | where {$_.isRefreshable -eq $true}
foreach($dataset in $DataSets)
{
$URI = "groups/" + $workspace.id + "/datasets/" + $dataset.id + "/refreshes"
#$OutFile = $ExportFolder + '\' + $workspace.Name + '-' + $dataset.Name + '.json'
$Results = Invoke-PowerBIRestMethod -Url $URI -Method Get | ConvertFrom-Json
foreach($result in $Results.value)
{
$errorDetails = $result.serviceExceptionJson | ConvertFrom-Json -ErrorAction SilentlyContinue
$row = New-Object psobject
$row | Add-Member -Name "Workspace" -Value $workspace.Name -MemberType NoteProperty
$row | Add-Member -Name "Dataset" -Value $dataset.Name -MemberType NoteProperty
$row | Add-Member -Name "refreshType" -Value $result.refreshType -MemberType NoteProperty
$row | Add-Member -Name "startTime" -Value $result.startTime -MemberType NoteProperty
$row | Add-Member -Name "endTime" -Value $result.endTime -MemberType NoteProperty
$row | Add-Member -Name "status" -Value $result.status -MemberType NoteProperty
$row | Add-Member -Name "errorCode" -Value $errorDetails.errorCode -MemberType NoteProperty
$row | Add-Member -Name "errorDescription" -Value $errorDetails.errorDescription -MemberType NoteProperty
$row | Export-Csv -Path $ExportFile -Append -Delimiter ';' -NoTypeInformation
}
}
}
For reference:
Best Regards,
Rico Zhou
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.