Public/Remove-specDeviceFromTVGroup.ps1

Function Remove-specDeviceFromTVGroup {
    <#
    .SYNOPSIS
        Removes a TeamViewer device from a specified group.
 
    .DESCRIPTION
        The Remove-specDeviceFromTVGroup function removes a TeamViewer device from the specified group using the provided Group ID,
        Management ID, and API key. It sends a DELETE request to the TeamViewer API to perform the removal.
 
    .PARAMETER GroupID
        Specifies the ID of the TeamViewer group from which the device should be removed.
 
    .PARAMETER ManagementID
        Specifies the Management ID of the TeamViewer device to be removed from the group.
 
    .PARAMETER APIKey
        Specifies the TeamViewer API key to authenticate the removal operation.
 
    .EXAMPLE
        Remove-specDeviceFromTVGroup -GroupID "123" -ManagementID "456" -APIKey $secureApiKey
        Removes the TeamViewer device with Management ID "456" from the group with ID "123" using the provided API key.
 
    .NOTES
        Author : owen.heaume
        Version : 1.0
 
    #>



    [cmdletbinding()]

    param (
        [string]$GroupID,

        [string]$ManagementID,

        [string]$APIKey
    )

    $url = "https://webapi.teamviewer.com/api/v1/managed/groups"
    $token = $APIKey

    $addDeviceUrl = "$url/$groupID/devices/$ManagementID"

    $body = @{
        id = $managementID
    } | ConvertTo-Json

    # Set up headers
    $headers = @{
        "Authorization" = "Bearer $token"
        "Accept"        = "application/json"
        "Content-Type"  = "application/json"  # Added this line
    }

    try {
        $removeDeviceResponse = Invoke-RestMethod -Uri $addDeviceUrl -Method Delete -Headers $headers -Body $body -ea stop
        return 0
    } catch {
        Write-Host "Failed to remove device with managementID [$managementid] from the group with ID: [$groupID]" -ForegroundColor DarkYellow
        Write-Host $_ -ForegroundColor DarkYellow
        return 1
    }
}