New-EntraGroupMember.ps1

function New-EntraGroupMember {
  param (
    [CmdletBinding()]
    [Parameter(Mandatory = $true)]
    [string]$EntraGroupID,
    [CmdletBinding()]
    [Parameter(Mandatory = $true)]
    [string]$EntraUserID,
    [Parameter(Mandatory = $true)]
    [string]$AccessToken
  )

  begin {
   
    $new_entra_group_member = @"
{
  "@odata.id": "https://graph.microsoft.com/v1.0/directoryObjects/$($EntraUserID)"
}
"@

  }
  process {
    $member_of = Invoke-GraphAPIRequest -Uri "https://graph.microsoft.com/v1.0/users/$($EntraUserID)/memberOf" -Method 'GET' -AccessToken $AccessToken

    if ($member_of.id -contains $EntraGroupID) {
      Write-Warning "$($EntraUserID) is already in group $($EntraGroupID)"
      return
    }
    
    Invoke-GraphAPIRequest `
      -Uri "https://graph.microsoft.com/v1.0/groups/$($EntraGroupID)/members/`$ref" `
      -Method POST `
      -Body $new_entra_group_member `
      -AccessToken $AccessToken
  }  
}