Public/Invoke-IDIDeviceRetire.ps1
function Invoke-IDIDeviceRetire { <# .SYNOPSIS Retire Intune devices (single or bulk) .DESCRIPTION Retire Intune devices (single or bulk) .PARAMETER IDIDevice Array of the device to trigger .PARAMETER Group Trigger Intune Devices within a specific group .PARAMETER User Trigger Intune Devices from a specific user (UPN) .PARAMETER deviceName Trigger Intune Devices by name .PARAMETER id Trigger Intune Devices by id (deviceID) .PARAMETER azureADDeviceId Trigger Intune Device by azureADDeviceId .PARAMETER All Trigger all Intune Devices .PARAMETER Grid Switch to select Intune Devices out of a GridView .PARAMETER Force Retire without asking for each device #> param ( [parameter(Mandatory = $false, HelpMessage = "Array of the device to trigger")] [ValidateNotNullOrEmpty()] [array]$IDIDevice, [parameter(Mandatory = $false, HelpMessage = "Trigger Intune Devices within a specific group")] [ValidateNotNullOrEmpty()] [string]$Group, [parameter(Mandatory = $false, HelpMessage = "Trigger Intune Devices from a specific primary user (UPN)")] [ValidateNotNullOrEmpty()] [string]$User, [parameter(Mandatory = $false, HelpMessage = "Trigger Intune Devices by Device Name")] [ValidateNotNullOrEmpty()] [string]$deviceName, [parameter(Mandatory = $false, HelpMessage = "Trigger Intune Devices by id")] [ValidateNotNullOrEmpty()] [string]$id, [parameter(Mandatory = $false, HelpMessage = "Trigger Intune Devices by azureADDeviceId")] [ValidateNotNullOrEmpty()] [string]$azureADDeviceId, [parameter(Mandatory = $false, HelpMessage = "Trigger all Intune Devices")] [ValidateNotNullOrEmpty()] [switch]$All, [parameter(Mandatory = $false, HelpMessage = "Switch to select Intune Devices out of a GridView")] [ValidateNotNullOrEmpty()] [switch]$Grid, [parameter(Mandatory = $false, HelpMessage = "Retire without asking for each device")] [ValidateNotNullOrEmpty()] [switch]$Force ) if($All){ if($global:IDIDevices_all){$global:IDIDevices_all | ForEach-Object{ Invoke-IDIDeviceRetire -IDIDevice $_}} else{Get-noneIDIDevice -All | ForEach-Object{ Invoke-IDIDeviceRetire -IDIDevice $_}} }elseif($Group){ Get-noneIDIDevice -Group "$Group" | ForEach-Object{ Invoke-IDIDeviceRetire -IDIDevice $_} }elseif($User){ Get-noneIDIDevice -User "$User" | ForEach-Object{ Invoke-IDIDeviceRetire -IDIDevice $_} }elseif($deviceName){ Get-noneIDIDevice -deviceName "$deviceName" | ForEach-Object{ Invoke-IDIDeviceRetire -IDIDevice $_} }elseif($id){ Get-noneIDIDevice -id "$id" | ForEach-Object{ Invoke-IDIDeviceRetire -IDIDevice $_} }elseif($azureADDeviceId){ Get-noneIDIDevice -azureADDeviceId "$azureADDeviceId" | ForEach-Object{ Invoke-IDIDeviceRetire -IDIDevice $_} }elseif($Grid){ if($global:IDIDevices_all){ $Devices2Sync = $global:IDIDevices_all | Out-GridView -Title "Please select your devices" -OutputMode Multiple $Devices2Sync | ForEach-Object{ Invoke-IDIDeviceRetire -IDIDevice $_} } else{Get-noneIDIDevice -Grid | ForEach-Object{ Invoke-IDIDeviceRetire -IDIDevice $_}} }elseif($IDIDevice){ if(!$Force){ $RunMajor = Read-Host "Are you sure you want to retire Device $($IDIDevice.id) (Y/N)" if($RunMajor -ne "Y"){break} } Write-Verbose "Retire device with id: $($IDIDevice.id) ..." $uri = "https://graph.microsoft.com/beta/deviceManagement/managedDevices('$($IDIDevice.id)')/microsoft.graph.retire" Invoke-MSGraphRequest -Url $uri -HttpMethod POST }else{ Write-Warning "No device or scope for Invoke-IDIDeviceRetire specified." } } |