Get certified for free when you join Fabric Data Days 2026 and dive into Fabric, Power BI, SQL, AI, and other essential data skills.
Join nowJuly 28 - August 9 | Final Round of the Power BI Dataviz World Championships. This is your chance. Learn more
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?
If you love stickers, then you will definitely want to check out our community sticker challenge, Barcelona edition!
Check out the July 2026 Power BI update to learn about new features.
| User | Count |
|---|---|
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |
| User | Count |
|---|---|
| 4 | |
| 3 | |
| 2 | |
| 1 | |
| 1 |