Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Grow your Fabric skills and prepare for the DP-600 certification exam by completing the latest Microsoft Fabric challenge.

Reply
powerbi_jenhen
Resolver II
Resolver II

Power BI Rest API via Powershell

Hi,

 

I have the below $Body variable to use within my API Invoke command, how can I exit the single quotes to reference my $server and $database variables? I currently receive the error: "DMTS_UnsupportedConnectionStringError". I've tried to add single quotes to exit but this triggers an unexpected token:

 

$Body = @{
        "datasourceType"="SQL"
        "connectionDetails"='{"server":$server,"database":$database}'
        "datasourceName"=$gatewaySourceName
    }
1 ACCEPTED SOLUTION
powerbi_jenhen
Resolver II
Resolver II

The issue was my server variable required "\\" not "\". Code that worked for me:

$Body = ConvertTo-Json -Depth 4 -InputObject $(@{
        dataSourceType = "Sql"
        connectionDetails = '{"server":"'+$server.Replace("\","\\")+'","database":"'+$database+'"}'
        datasourceName = $sourceName
        credentialDetails = @{
            credentialType = $credentialDetails.credentialType
            credentials = $credentialDetails.credentials
            encryptedConnection = $credentialDetails.encryptedConnection
            encryptionAlgorithm = $credentialDetails.encryptionAlgorithm
            privacyLevel = $credentialDetails.privacyLevel
        }
    })

View solution in original post

3 REPLIES 3
powerbi_jenhen
Resolver II
Resolver II

The issue was my server variable required "\\" not "\". Code that worked for me:

$Body = ConvertTo-Json -Depth 4 -InputObject $(@{
        dataSourceType = "Sql"
        connectionDetails = '{"server":"'+$server.Replace("\","\\")+'","database":"'+$database+'"}'
        datasourceName = $sourceName
        credentialDetails = @{
            credentialType = $credentialDetails.credentialType
            credentials = $credentialDetails.credentials
            encryptedConnection = $credentialDetails.encryptedConnection
            encryptionAlgorithm = $credentialDetails.encryptionAlgorithm
            privacyLevel = $credentialDetails.privacyLevel
        }
    })
lbendlin
Super User
Super User

 

 

 

$Body = @"
{
        "datasourceType":"SQL",
        "connectionDetails":'{"server":$server,"database":$database}',
        "datasourceName":$gatewaySourceName
}
"@@

 

 

note that the last line should be "@ .  Can't get rid of the second @

Thanks! I actually have further details in my $Body so would the below be the correct syntax? I'm getting a "BadRequest" on my Invoke:

 

$Body = @"
    {
        "datasourceType":"SQL",
        "connectionDetails":'{"server":$server,"database":$database}',
        "datasourceName":$sourceName,
        "credentialDetails":{
            "credentialType":$credentialDetails.credentialType,
            "credentials":$credentialDetails.credentials,
            "encryptedConnection":$credentialDetails.encryptedConnection,
            "encryptionAlgorithm":$credentialDetails.encryptionAlgorithm,
            "privacyLevel":$credentialDetails.privacyLevel
        }
    }
"@

Helpful resources

Announcements
RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

MayPowerBICarousel1

Power BI Monthly Update - May 2024

Check out the May 2024 Power BI update to learn about new features.