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. $_" } } } } } |