Get-UserDeviceRegistrationEvents.ps1
<#PSScriptInfo .VERSION 1.2 .GUID 28a1b634-1267-415c-891d-4afb3a72e217 .AUTHOR Iain Borghoff .COMPANYNAME .COPYRIGHT .TAGS Windows Autopilot .LICENSEURI .PROJECTURI .ICONURI .EXTERNALMODULEDEPENDENCIES .REQUIREDSCRIPTS .EXTERNALSCRIPTDEPENDENCIES .RELEASENOTES Version 1.0: Initial publish. Version 1.1: Fixed script exiting after installing required module. Version 1.2: Fixed previous fix in 1.1. #> <# .DESCRIPTION Retrieves the User Device Registration events from the device and either save them as a log file to C:\ProgramData\Microsoft\IntuneManagementExtension\Logs (which will be included with the logs files collected with Collect Diagnostics from Endpoint), or specify a file name and path. Be sure to set/update the file extension to xlsx before opening the resulting file. .PARAMETER outputfile The name and path of the log file .EXAMPLE .\Get-UserDeviceRegistrationEvents.ps1 -logfile C:\temp\udre.xlsx #> [CmdletBinding()] param ( $logfile ) # Install the ImportExcel module if not installed if (!(Get-InstalledModule | Where-Object { $_.Name -like 'ImportExcel' })) { try { Write-Host 'Installing ImportExcel module' -ForegroundColor Cyan Install-Module -Name ImportExcel -Force -ErrorAction SilentlyContinue Write-Host 'Module installed' -ForegroundColor Cyan Import-Module -Name ImportExcel } catch { Write-Warning -message 'Module failed to install' Exit 1 } } # Get device serial number $serialnumber = (Get-WmiObject Win32_BIOS | Select-Object SerialNumber).Serialnumber # Check if serial number is blank and if it is, get the baseboard serial number if ($serialnumber.Trim() -eq "") { $serialnumber = (Get-WmiObject Win32_BaseBoard).SerialNumber } # Generate report of events Write-Host 'Getting events and generating report...' -ForegroundColor Cyan $events = Get-WinEvent -LogName 'Microsoft-Windows-User Device Registration/Admin' -Oldest | Where-Object { $_.ID -like '4096' -or $_.ID -like '304' -or $_.ID -like '306' -or $_.ID -like '334' -or $_.ID -like '335' } | Select-Object TimeCreated, ID, ProviderName, LevelDisplayName, Message if ($logfile) { $events | Export-Excel -path "$logfile" } else { $events | Export-Excel -path "C:\ProgramData\Microsoft\IntuneManagementExtension\Logs\$($serialnumber)_udre.log" } Write-Host 'Report generated' -ForegroundColor Green |