<# Author: Gabe Kerntke Date: 03-13-2024 .Synopsis .Modified 2024-03-13 (GabeK) - Original script created #> ###################### ### Variables ### ###################### $Name = "SaRAcmd" $FileName = $Name + ".exe" $EPCacheLocal = "$Env:windir\NCentral\Cache" $Global:EPCacheLocalLocation = $ENV:EPCacheLocal + '\' + $Name + '\' + $FileName $InstallParameters = "-S OfficeScrubScenario -AcceptEula -OfficeVersion All" ###################### ### Functions ### ###################### #Function checks for 32 or 64 bit processor and then pulls list of applications accordingly Function Get-Software ($CPU = $ENV:PROCESSOR_ARCHITECTURE) { If ($CPU -eq 'AMD64') { $64bit = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* $32bit = Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* $32bit + $64bit } Else { Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* } } Function ExitCode { If ($ExitCode -eq 0) { Write-Host "$App_Name or $App_Name2 successfully uninstalled, recommend rebooting." Start-Sleep 5 Remove-Item "$EPCacheLocal\$Name" -Force -Recurse Remove-Item "$EPCacheLocal\SaRa.zip" -Force } ElseIf ($ExitCode -eq 3010) { Write-Host "$App_Name or $App_Name2 successfully removed, but requires a reboot to complete." Start-Sleep 5 Remove-Item "$EPCacheLocal\$Name" -Force -Recurse Remove-Item "$EPCacheLocal\SaRa.zip" -Force } Else { Write-Host `n Start-Sleep 5 Write-Host "$App_Name or $App_Name2 failed to uninstall. Exit Code:" + $ExitCode Remove-Item "$EPCacheLocal\$Name" -Force -Recurse Remove-Item "$EPCacheLocal\SaRa.zip" -Force } } Function Check { $App_Name = "Microsoft 365" $Applist = Get-Software | Where-Object { $_.DisplayName -like "*$App_Name*" } $App_Name2 = "Microsoft Office" $Applist2 = Get-Software | Where-Object { $_.DisplayName -like "*$App_Name2*" } If ($Applist.DisplayName -like "*$App_Name*") { Write-Host "$App_Name is installed, proceeding with uninstall." Download } ElseIf ($Applist2.DisplayName -like "*$App_Name2*") { Write-Host "$App_Name2 is installed, proceeding with uninstall." Download } Else { Write-Host "$App_Name or $App_Name2 is not installed, exiting script." } } Function Download { Invoke-WebRequest -UseBasicParsing "https://aka.ms/SaRA_EnterpriseVersionFiles" -OutFile "$EPCacheLocal\SaRa.zip" Extract } Function Extract { Expand-Archive -Path "$EPCacheLocal\SaRa.zip" -DestinationPath "$EPCacheLocal\$Name" Run } Function Run { $Install = Start-Process $EPCacheLocalLocation -ArgumentList $InstallParameters -Wait -PassThru $ExitCode = ($Install).ExitCode ExitCode } ###################### ### Script start ### ###################### Check