Forum Discussion

jvanrossum's avatar
jvanrossum
New Member
5 years ago
Solved

PowerShell Rest API refreshSchedule - Response status code does not indicate success: 400

When I use PowerShell (via DevOps) to call the refreshSchedule operation it fails:
Messages - One or more errors occurred.
Inner Exception - Response status code does not indicate success: 400 (Bad Request).

# Create credentials for Service Principal
$ServicePrincipalCredentials = New-Object System.Management.Automation.PSCredential ($ApplicationId, (convertto-securestring $ClientSecret -asplaintext -force))

# Login to Power BI
Connect-PowerBIServiceAccount -Credential $ServicePrincipalCredentials `
                              -Tenant $TenantId `
                              -Environment Public `
                              -ServicePrincipal 

# Example schedule
[string]$body =  "{""value"":{""times"":[""16:00""],""Enabled"":""true""}}"

# Construct Rest API URL
[string]$Url = "groups/$($WorkspaceId)/datasets/$($dataset.id)/refreshSchedule"

# Call Rest API
Invoke-PowerBIRestMethod -Url $Url -Method Patch -ContentType "application/json" -Body $body

When I print the variables to the screen and copy and paste them in the Try It section of the documentation it always works without errors. Tried serveral ways to construct the body (different messages, different string constructions). Before this Rest API call I have at least a dozen other PBI Rest API call and they all work without errors.... Any suggestions?

  • Anonymous's avatar
    Anonymous
    4 years ago

    Unfortunately is seems that a Service Principal cannot perform this action. You need a Service Account (AAD account) for this.

3 Replies

    • jvanrossum's avatar
      jvanrossum
      New Member

      Thanks for the reply, but I'm not sure how that post helps solving my problem. They have the same general error message, but that problem is about embedded.

      • Anonymous's avatar
        Anonymous
        Not applicable

        Unfortunately is seems that a Service Principal cannot perform this action. You need a Service Account (AAD account) for this.