Public/Add-DatabricksMemberToGroup.ps1

<#
 
.SYNOPSIS
    Add Databricks user or group to a group.
 
.DESCRIPTION
    This command allows to add existing user or group to a group.
 
.PARAMETER BearerToken
    Your Databricks Bearer token to authenticate to your workspace (see User Settings in Databricks WebUI)
 
.PARAMETER Region
    Azure Region - must match the URL of your Databricks workspace, example northeurope
 
.PARAMETER Member
    Name of an exsisting user or a group.
 
.PARAMETER Parent
    Name of an existing parent group.
 
.EXAMPLE
C:\PS> Add-DatabricksUserToGroup -BearerToken $BearerToken -Region $Region -Name "user@yourdomain.com" -Parent "developers"
 
This example adds user user@yourdomain.com to "developers" group
 
.NOTES
    Author: Tadeusz Balcer
 
#>


Function Add-DatabricksMemberToGroup
{
    [cmdletbinding()]
    param (
        [parameter(Mandatory=$true)][string]$BearerToken,
        [parameter(Mandatory=$true)][string]$Region,
        [parameter(Mandatory=$true)][string]$Member,
        [parameter(Mandatory=$true)][string]$Parent
    )

    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

    $InternalBearerToken = Format-BearerToken($BearerToken)
    $Region = $Region.Replace(" ","")

    Try
    {
        $groups = Get-DatabricksGroups -BearerToken $BearerToken -Region $Region
        If ($groups.Contains($Member)) 
        {
            $body = '{"group_name": "' + $Member + '", "parent_name": "' + $Parent + '" }'    
        }
        Else 
        {
            $body = '{"user_name": "' + $Member + '", "parent_name": "' + $Parent + '" }'
        }

        Invoke-RestMethod -Method Post -Body $body -Uri "https://$Region.azuredatabricks.net/api/2.0/groups/add-member" -Headers @{Authorization = $InternalBearerToken} -OutFile $OutFile
        Write-Verbose "User $UserName added to $Parent group"
    }
    Catch {
        if ($_.Exception.Response -eq $null) {
            Write-Error $_.Exception.Message
        } else {
            Write-Output "StatusCode:" $_.Exception.Response.StatusCode.value__ 
            Write-Output "StatusDescription:" $_.Exception.Response.StatusDescription
            Write-Error $_.ErrorDetails.Message   
        }  
    }
}