Forum Discussion
powerbi_jenhen
2 years agoResolver 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
}
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 = $sourceNamecredentialDetails = @{credentialType = $credentialDetails.credentialTypecredentials = $credentialDetails.credentialsencryptedConnection = $credentialDetails.encryptedConnectionencryptionAlgorithm = $credentialDetails.encryptionAlgorithmprivacyLevel = $credentialDetails.privacyLevel}})
3 Replies
- lbendlinSuper 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 @
- powerbi_jenhenResolver II
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}}"@
- powerbi_jenhenResolver 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 = $sourceNamecredentialDetails = @{credentialType = $credentialDetails.credentialTypecredentials = $credentialDetails.credentialsencryptedConnection = $credentialDetails.encryptedConnectionencryptionAlgorithm = $credentialDetails.encryptionAlgorithmprivacyLevel = $credentialDetails.privacyLevel}})