Hi,
I wonder if someone can help me. I need to set an existing dataset to be owned by a service principal but cant seem to manage it.
the two options I can see are:
1. Manually set it - cant do this because setting manually assigns the dataset ownership as the logged in user, but you cant log in to the service as a service principal
2. use the powershell API - same problem here, there doesnt seem to be an option to set who owns it, it just picks up the logged in user and I dont know how to log in via the API as a service principal. Found a take over script example here https://github.com/Azure-Samples/powerbi-powershell/blob/master/takeover-dataset.ps1
Does anyone know how I can do this?
Thanks
Solved! Go to Solution.
Hi @dom99 ,
Using powershell it is possible
I already created the entier script and published here
https://gallery.technet.microsoft.com/AzureDevOps-CICD-for-fefd58b8
The powershell scripts looks like
$applicationId = ""
$clientsec = "" | ConvertTo-SecureString -AsPlainText -Force #
$credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $applicationId, $clientsec
Connect-PowerBIServiceAccount -ServicePrincipal -Credential $credential -TenantId ""
$workspacename="PowerBI_CICD_PROD"
$datasetname="AdventureReports"
##Getworksapce
$workspace =Get-PowerBIWorkspace -Name $workspacename
# GetDataSets
$DatasetResponse=Invoke-PowerBIRestMethod -Url "groups/$($workspace.id)/datasets" -Method Get | ConvertFrom-Json
# Get DataSet
$datasets = $DatasetResponse.value
foreach($dataset in $datasets){
if($dataset.name -eq $datasetname){
$datasetid= $dataset.id;
break;
}
}
## Take Over DataSet
Invoke-PowerBIRestMethod -Url "groups/$($workspace.id)/datasets/$($datasetid)/Default.TakeOver" -Method Post
Proud to be a Super User!
Hi @dom99 ,
Using powershell it is possible
I already created the entier script and published here
https://gallery.technet.microsoft.com/AzureDevOps-CICD-for-fefd58b8
The powershell scripts looks like
$applicationId = ""
$clientsec = "" | ConvertTo-SecureString -AsPlainText -Force #
$credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $applicationId, $clientsec
Connect-PowerBIServiceAccount -ServicePrincipal -Credential $credential -TenantId ""
$workspacename="PowerBI_CICD_PROD"
$datasetname="AdventureReports"
##Getworksapce
$workspace =Get-PowerBIWorkspace -Name $workspacename
# GetDataSets
$DatasetResponse=Invoke-PowerBIRestMethod -Url "groups/$($workspace.id)/datasets" -Method Get | ConvertFrom-Json
# Get DataSet
$datasets = $DatasetResponse.value
foreach($dataset in $datasets){
if($dataset.name -eq $datasetname){
$datasetid= $dataset.id;
break;
}
}
## Take Over DataSet
Invoke-PowerBIRestMethod -Url "groups/$($workspace.id)/datasets/$($datasetid)/Default.TakeOver" -Method Post
Proud to be a Super User!
Hi @Jayendran
I've tried your script but unfortunatly the method below fails.
Invoke-PowerBIRestMethod
I successfully log in as the service principal and assign the values as required, the script works up until the very end.
The error message is:
Invoke-PowerBIRestMethod : One or more errors occurred.
At line:3 char:1
+ Invoke-PowerBIRestMethod -Url "groups/$($workspace.id)/datasets/$($da ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (Microsoft.Power...werBIRestMethod:InvokePowerBIRestMethod) [Invoke-PowerBIR
estMethod], AggregateException
+ FullyQualifiedErrorId : One or more errors occurred.,Microsoft.PowerBI.Commands.Profile.InvokePowerBIRestMethod
Can you help with finding out why its not working? I found your powershell scripts you'd uploaded, very handy to have thank you.
Hi @dom99 ,
After you got the error run the below script
Resolve-PowerBIError
Which will gives you the exact error
Proud to be a Super User!
Hi @Jayendran
I read the documentation and turns out the -Body parameter (sometimes called the content) is now required for POST operations.
so the invoke method looks like:
Invoke-PowerBIRestMethod -Url "groups/$($workspace.id)/datasets/$($datasetid)/Default.TakeOver" -Method Post -Body ""
thanks for your help 🙂
@Jayendran Hi, thanks for the response.
Great thank you thats exactly what I needed. I will try it out shortly 🙂
User | Count |
---|---|
12 | |
3 | |
3 | |
2 | |
2 |