Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
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?
User | Count |
---|---|
15 | |
4 | |
2 | |
1 | |
1 |