Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
I am writing a script that users can run to update all their DNS based analysis services connections to the new link:// alias style connection. The whole script is below:
#Requires -Version 5 Set-StrictMode -Version Latest Install-Module -Name MicrosoftPowerBIMgmt -Scope CurrentUser Import-Module MicrosoftPowerBIMgmt Connect-PowerBIServiceAccount try { $groups = Invoke-PowerBiRestMethod -Url 'https://api.powerbi.com/v1.0/myorg/groups/' -Method GET | ConvertFrom-Json foreach ($group in $groups.value) { Write-Host "Processing group $($group.name)" $groupId = $group.id $dataSets = Invoke-PowerBiRestMethod -Url "https://api.powerbi.com/v1.0/myorg/groups/$groupId/datasets" -Method GET | ConvertFrom-Json foreach ($dataset in $datasets.value) { Write-Host "Processing dataset $($dataset.name)" $dataSetId = $dataset.id $dataSourceUri = "https://api.powerbi.com/v1.0/myorg/groups/$groupId/datasets/$dataSetId/datasources" $dataSources = Invoke-PowerBiRestMethod -Url $dataSourceUri -Method GET | ConvertFrom-Json if (-not $dataSources) { Resolve-PowerBIError -Last continue } $updates = $dataSources.value | Where-Object { $_.datasourceType -eq 'AnalysisServices' } | Where-Object { $_.connectionDetails.server -match 'cube\.ds-\w*\.foobar\.com' } | ForEach-Object { $update = [pscustomobject] [ordered] @{ datasourceSelector = [pscustomobject] [ordered] @{ datasourceType = $_.datasourceType connectionDetails = $_.connectionDetails } connectionDetails = [pscustomobject] [ordered] @{ server = "link://wibble.foobar.com" database = $_.connectionDetails.database } } Write-Output $update } if ($null -eq $updates) { continue } Write-Host "Found analysis services connections" $updateDetails = @{ updateDetails = $updates } Write-Host "Updating connection details" -ForegroundColor Cyan $body = $updateDetails | ConvertTo-Json -Depth 10 $url = "https://api.powerbi.com/v1.0/myorg/groups/$groupId/datasets/$dataSetId/Default.UpdateDatasources" $updateResponse = Invoke-PowerBiRestMethod -Url $url -Method POST -Body $body -ErrorAction Stop | ConvertFrom-Json Write-Output $updateResponse } } } catch { Resolve-PowerBIError -Last }
The final post body looks fine according to the docs but I get a Bad Request response from the service.
With no additional clues I have no idea what to try next.
Did you have a resolution for this issue?
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
13 | |
2 | |
2 | |
1 | |
1 |