public/Remove-IntuneDevice.ps1

function Remove-IntuneDevice {
<#
.SYNOPSIS
    Removes Intune managed devices. Supports -WhatIf and -Confirm.

.PARAMETER ManagedDevice
    One or more managed device objects from Graph or at least containing Id/DeviceName.

.EXAMPLE
    Get-StaleIntuneDevice | Remove-IntuneDevice -WhatIf
#>

    [CmdletBinding(SupportsShouldProcess, ConfirmImpact='High')]
    param(
        [Parameter(Mandatory, ValueFromPipeline)]
        [object[]]$ManagedDevice
    )
    process {
        foreach ($md in $ManagedDevice) {
            $target = "{0} (Id: {1})" -f ($md.DeviceName ?? $md.UserDisplayName ?? $md.Id), $md.Id
            if ($PSCmdlet.ShouldProcess("Intune Managed Device","Remove $target")) {
                try {
                    Remove-MgDeviceManagementManagedDevice -ManagedDeviceId $md.Id -Confirm:$false -ErrorAction Stop
                    Write-Verbose "Removed Intune device $target"
                } catch {
                    Write-Warning "Failed to remove Intune device $target. $_"
                }
            }
        }
    }
}