Helpers/Uninstall-ProgramScriptTemplate.ps1

$OperatingFolder = 'C:\ProgramData\Microsoft\IntuneManagementExtension\Logs'
$SoftwareName = 'VSCode'
$ArgumentListUninstallation = '/qn'
# Log
$LogFile = "$OperatingFolder\IntuneSoftwareInstall.log"
$LogFileError = "$OperatingFolder\IntuneSoftwareInstallError.log"
#Info
. $PSScriptRoot\Write-FileLog.ps1
$Software = Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*',
'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*',
'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*',
'HKCU:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*' -ErrorAction Ignore |
Where-Object DisplayName |
Select-Object -Property DisplayName, DisplayVersion, UninstallString, InstallDate |
Sort-Object -Property DisplayName |
Where-Object { $PSItem.DisplayName -like "$SoftwareName*" }
#Install
Write-FileLog -FunctionStart -LogFile $LogFile
Write-FileLog -Message "Uninstall with arguments: $($Software.UninstallString)" -LogFile $LogFile
try {
    $Process = Start-Process -FilePath $(($Software.UninstallString -split ' ')[0]) -ArgumentList "$(($Software.UninstallString -split ' ')[1] -replace 'I','X') $ArgumentListUninstallation"  -NoNewWindow -PassThru -Wait -ErrorAction Stop
    Write-FileLog -Message "Exit code: $($Process.ExitCode)" -LogFile $LogFile
} catch {
    Write-FileLog -Type Error -Message "Script ERROR" -LogFileError $LogFileError
    $_ | Out-File -FilePath $LogFileError -Append -Encoding ASCII
    Write-FileLog -Type Warn -Message "Script TERMINATION" -LogFileError $LogFileError
}