Public/Start-IDI.ps1
function Start-IDI{ <# .SYNOPSIS Get all Intune Devices and compile notes (json) into the output .DESCRIPTION Get all Intune Devices and compile notes (json) into the output .PARAMETER outFile Switch to create a JSON file after command completion .PARAMETER IDIDevices_json Path to the Output JSON .PARAMETER openJSON Switch to open the JSON file after creation .PARAMETER Force Switch to force overwrite of cached changes #> param ( [parameter(Mandatory = $false, HelpMessage = "Switch to create a JSON file after command completion")] [ValidateNotNullOrEmpty()] [switch]$outFile, [parameter(Mandatory = $false, HelpMessage = "Path to the Output JSON")] [ValidateNotNullOrEmpty()] [string]$IDIDevices_json = "$env:temp\IDIDevices.json", [parameter(Mandatory = $false, HelpMessage = "Switch to open the JSON file after creation")] [ValidateNotNullOrEmpty()] [switch]$openJSON, [parameter(Mandatory = $false, HelpMessage = "Switch to force overwrite of cached changes")] [ValidateNotNullOrEmpty()] [switch]$Force, [parameter(Mandatory = $false, HelpMessage = "Switch to run the function silent, without any output")] [ValidateNotNullOrEmpty()] [switch]$Silent ) # Run again, will overrite if(!$Force){ if($global:IDIDevices_all){ if([System.Windows.Forms.MessageBox]::Show("Continue Task? (-Force)","All changes wil be overriten", "YesNo" , "Warning" , "Button1") -ne "Yes"){break} } } # Check Connection / Connect Connect-IDI $global:IDIDevices_all = Get-IDIDevice -All <# # Reading all managed devices Write-Verbose "Get all managed Devices from Intune..." $uri = "https://graph.microsoft.com/beta/deviceManagement/managedDevices" $managedDevices = (Invoke-MSGraphRequest -HttpMethod GET -Url $uri -ErrorAction Stop) Write-Verbose "Creating report..." $TotalItems = $managedDevices.value.Count $CurrentItem = 0 $PercentComplete = 0 $global:IDIDevices_all = @() foreach ($property in $($managedDevices.value | Select-Object -first 1).PSObject.Properties) { $global:IDIDevices_all | Add-Member -NotePropertyName $property.Name -NotePropertyValue $null } ForEach($ThisDevice in $managedDevices.value){ Write-Progress -Activity "Creating report..." -Status "$PercentComplete% Complete:" -PercentComplete $PercentComplete $CurrentItem++ $PercentComplete = [int](($CurrentItem / $TotalItems) * 100) # Get notes field $Notes = $null $Resource = "deviceManagement/managedDevices('$($ThisDevice.id)')" $properties = 'notes' $uri = "https://graph.microsoft.com/beta/$($Resource)?select=$properties" $Notes = (Invoke-MSGraphRequest -HttpMethod GET -Url $uri -ErrorAction Stop).notes if($Notes){ $Notes = $Notes | Convertfrom-Json # add Properties to main collection & this client foreach($property in $Notes[0].PSObject.Properties){ $global:IDIDevices_all | Add-Member -NotePropertyName $property.Name -NotePropertyValue $null -ErrorAction SilentlyContinue $ThisDevice | Add-Member -NotePropertyName $property.Name -NotePropertyValue $property.Value } } $global:IDIDevices_all += $ThisDevice } #> if($outFile){ $global:IDIDevices_all | Convertto-Json | Out-File $IDIDevices_json if($openJSON){explorer $IDIDevices_json} } } |