Hi
I have created the following PowerShell Script to set parameters for a dataset , it returns the list is empty even though its not, the parameters list is a list I created in Power Query and referenced as query in the manage parameters section
Help would be appreciated - this is the error
VERBOSE: POST https://api.powerbi.com/v1.0/myorg/groups/e7229a42-46ef-4d80-b8ca-e42909509dbb/datasets/68fbeff4-ce61-43d4-8f8d-74dcd1452393/UpdateParamet
ers with -1-byte payload
VERBOSE: received -1-byte response of content type application/octet-stream
updateDetails
-------------
{@{name=Type; newValue=Product}}
error : @{code=InvalidRequest; message=Dataset Parameters list is invalid in 68fbeff4-ce61-43d4-8f8d-74dcd1452393. Reason: Empty;
target=68fbeff4-ce61-43d4-8f8d-74dcd1452393}
This is the Script
$clientId = "ab3afa9b-c31f-41ed-bdc9-84c9c68069b9"
$groupID = "e7229a42-46ef-4d80-b8ca-e42909509dbb" # the ID of the group that hosts the dataset. Use "me" if this is your My Workspace
$datasetID = "68fbeff4-ce61-43d4-8f8d-74dcd1452393" # the ID of the dataset that hosts the dataset
$json = @"
{ "updateDetails": [
{
"name": "Type",
"newValue": "Product"
}
]
}
"@
$powershellrepresentation = $json | ConvertFrom-Json
$powershellrepresentation
function GetAuthToken
{
$adal = "${envrogramFiles}\WindowsPowerShell\Modules\AzureRM.profile\4.5.0\Microsoft.IdentityModel.Clients.ActiveDirectory.dll"
$adalforms = "${envrogramFiles}\WindowsPowerShell\Modules\AzureRM.profile\4.5.0\Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll"
[System.Reflection.Assembly]::LoadFrom($adal) | Out-Null
[System.Reflection.Assembly]::LoadFrom($adalforms) | Out-Null
$redirectUri = "urn:ietf:wgauth:2.0
ob"
$resourceAppIdURI = "https://analysis.windows.net/powerbi/api"
$authority = "https://login.microsoftonline.com/common/oauth2/authorize";
$authContext = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext" -ArgumentList $authority
$authResult = $authContext.AcquireToken($resourceAppIdURI, $clientId, $redirectUri, "Auto")
return $authResult
}
# Get the auth token from AAD
$token = GetAuthToken
# Building Rest API header with authorization token
$authHeader = @{
'Content-Type'='application/json'
'Authorization'=$token.CreateAuthorizationHeader()
}
# properly format groups path
$groupsPath = ""
if ($groupID -eq "me") {
$groupsPath = "myorg"
} else {
$groupsPath = "myorg/groups/$groupID"
}
# POST body
$postParams = $powershellrepresentation
$jsonPostBody = $postParams | ConvertTo-Json
# Make the request to clone the report
$uri = "https://api.powerbi.com/v1.0/$groupsPath/datasets/$datasetID/UpdateParameters"
try{$resp=Invoke-RestMethod -Uri $uri -Headers $authHeader -Method POST -Body $jsonPostBody -Verbose}
catch {
$streamReader = [System.IO.StreamReader]::new($_.Exception.Response.GetResponseStream())
$ErrResp = $streamReader.ReadToEnd() | ConvertFrom-Json
$streamReader.Close()
}
$ErrResp | Format-list