Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
8 years ago
Solved

PowerBI REST GroupID and dataset name

Hi All,

 

I am looking to find out all dataset names that are run in multiple workspaces. 

I have 100 workspaces on dedicated capacity and I need to know all workspaces and all datasets that are using it.

I am working in PowerShell.

 

I know that workspace Name is same as Office365 group so I am able to add my admin account to all workspaces if neede.

 

What I have up untill now is:

 

Import-Module azurerm
$clientId = "my-client-id"
 
function GetAuthToken
{
    $adal = "${env:ProgramFiles}\WindowsPowerShell\Modules\AzureRM.profile\5.3.4\Microsoft.IdentityModel.Clients.ActiveDirectory.dll"
    
    $adalforms = "${env:ProgramFiles}\WindowsPowerShell\Modules\AzureRM.profile\5.3.4\Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll"
 
    [System.Reflection.Assembly]::LoadFrom($adal) | Out-Null

    [System.Reflection.Assembly]::LoadFrom($adalforms) | Out-Null

    $redirectUri = "urn:ietf:wg:oauth:2.0:oob"

    $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
}

function get_groups_path($group_id) {
    if ($group_id -eq "me") {
        return "myorg"
    } else {
        return "myorg/groups/$group_ID"
    }
}

$token = GetAuthToken

$auth_header = @{
   'Content-Type'='application/json'
   'Authorization'=$token.CreateAuthorizationHeader()
}

and it works for below 

 

$uri = "https://api.powerbi.com/v1.0/myorg/groups/"
$all_groups = (Invoke-RestMethod -Uri $uri –Headers $auth_header –Method GET).value

This gives me all workspaces that I have access to and thats OK I am happy so far.

 

What I cant get over is how to get dataset name in each workspace that I have access to.

Each command I run is comming up with Forbidden access or Not Found.

Anyone hav any idea how to show dataset in workspace other then my?