Public/ConvertTo-IDINotes.ps1
function ConvertTo-IDINotes{ <# .SYNOPSIS Converts non IDI created Notes to IDI compatible JSON with custom PropertyName .DESCRIPTION Converts non IDI created Notes to IDI compatible JSON with custom PropertyName .PARAMETER DeviceId Array of the device to set/update .PARAMETER PropertyName Property Name of the notes content .PARAMETER All Switch to run command for all devices #> param ( [parameter(Mandatory = $false, HelpMessage = "Array of the device to converte the notes for")] [ValidateNotNullOrEmpty()] [array]$DeviceId, [parameter(Mandatory = $true, HelpMessage = "Property Name of the notes content")] [ValidateNotNullOrEmpty()] [string]$PropertyName, [parameter(Mandatory = $false, HelpMessage = "Convert Notes from all Devices")] [ValidateNotNullOrEmpty()] [switch]$All ) try{ if($All){ Write-Verbose "Read all Intune Devices and run *ConvertTo-IDINotes -IDIDevice `$_* ..." Get-noneIDIDevice -All | ForEach-Object{ ConvertTo-IDINotes -DeviceId $_.id -PropertyName $PropertyName } }else{ Write-Verbose "Read notes for $DeviceId" $Notes = $null $Resource = "deviceManagement/managedDevices('$DeviceId')" $properties = 'notes' $uri = "https://graph.microsoft.com/beta/$($Resource)?select=$properties" $Notes = (Invoke-MSGraphRequest -HttpMethod GET -Url $uri -ErrorAction Stop).notes if($Notes){ try{ $IDINoteCheck = $null $IDINoteCheck = $($Notes | ConvertFrom-Json -ErrorAction SilentlyContinue) }catch{} if($IDINoteCheck){ Write-Warning "Device already compatible with IDI: $DeviceId" }else{ Write-Verbose "Convert notes to JSON with PropertyName $PropertyName" $NoteObj = @( [pscustomobject]@{$PropertyName="$Notes"} ) $NoteObj = $NoteObj | Convertto-Json Write-Verbose "Update notes on Intune Device: $DeviceId" $Json = @{ "notes" = "$NoteObj" } $uri = "https://graph.microsoft.com/beta/deviceManagement/managedDevices('$DeviceId')" Invoke-MSGraphRequest -Url $uri -HttpMethod PATCH -Content $Json } }else{Write-Verbose "Device $DeviceId has no notes."} } }catch{ Write-Error "Error while processing notes: $DeviceId `n$_" } } |