$logFile = "${env:TEMP}/fleet-install-software.log" # MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED, # 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure. $successCodes = @(0, 3010, 1641) try { $installProcess = Start-Process msiexec.exe ` -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" ` -PassThru -Verb RunAs -Wait Get-Content $logFile -Tail 500 if ($successCodes -contains $installProcess.ExitCode) { Exit 0 } Exit $installProcess.ExitCode } catch { Write-Host "Error: $_" Exit 1 }