<# Author: Gabe Kerntke Company: UFS LLC Date: 02-21-2024 .Synopsis Script checks to see if Webex is installed, if it is then it will find the uninstall string from registry and uninstall it via that method .Modified 2024-02-21 (GabeK) - Original script created 2025-07-28 (GabeK) - Updated to use functions script #> # Variables # $App_Name = "Webex" $users = (Get-ChildItem -path c:\users).name # Functions # #Function to uninstall via Reg Key uninstall string Function Uninstall-App { $UninstallString = $Applist | Where-Object { $_.DisplayName -eq $App_Name } | Select-Object -ExpandProperty UninstallString $UninstallString + " /qn" | cmd If ($Applist.DisplayName -like "*$App_Name*") { Uninstall-App2 } Else { Write-Host "$App_Name uninstalled successfully" } } #Function to uninstall via Reg Key uninstall string Function Uninstall-App2 { $UninstallString = $Applist | Where-Object { $_.DisplayName -eq $App_Name } | Select-Object -ExpandProperty UninstallString | Where-Object ($_.UninstallString -like "*C:\*") $UninstallString += " -silent" | cmd If ($Applist.DisplayName -like "*$App_Name*") { Uninstall-App_PSPath } Else { Write-Host "$App_Name uninstalled successfully" } } #Function to uninstall by deleting User Reg Key Function Uninstall-App3 { New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS $RegistyPath = Get-ChildItem -Path HKU:\ | Select-Object -ExpandProperty Name $Registy = $RegistyPath.Substring(10) Foreach ($Reg in $Registy) { Get-ChildItem HKU:$Reg | Where-Object { $_.Name -like "*Webex*" } | Remove-Item -Force -Verbose -Recurse } Write-Host "$App_Name removed successfully" } Function Test-Uninstall { foreach ($user in $users) { $path = "C:\Users\$user\AppData\Local\Programs\Cisco Spark" $path2 = "C:\Users\$user\AppData\Local\CiscoSpark" $path3 = "C:\Users\$user\AppData\Local\CiscoSparkLauncher" $path4 = "C:\Users\$user\AppData\Local\CiscoWebexLauncher" If (Test-Path $path) { Remove-Item $path -Force -Recurse -Verbose Remove-Item $path2 -Force -Recurse -Verbose Remove-Item $path3 -Force -Recurse -Verbose Remove-Item $path4 -Force -Recurse -Verbose } } New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS -ErrorAction SilentlyContinue | Out-Null $Keys = Get-ChildItem "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\" -Recurse $SIDs = $Keys.PSChildName foreach ($SID in $SIDs) { If (Test-Path "HKU:\$SID\Software\Microsoft\Windows\CurrentVersion\Uninstall") { Get-ChildItem "HKU:\$SID\Software\Microsoft\Windows\CurrentVersion\Uninstall" | Where-Object { $_ -like "*Webex*" } | Remove-Item -Force -Recurse -Verbose -ErrorAction SilentlyContinue } If (Test-Path "HKU:\$SID\Software\Microsoft\Windows\CurrentVersion\Uninstall\*webex*") { Write-Host "Webex uninstall key for $SID still exists." } } $Tool = "CiscoWebexRemoveTool.exe" $URL = "https://www.cisco.com/c/dam/en/us/td/docs/collaboration/webex_centers/Collaboration-Help/TS-Help-Portal-Support-Utilities/CiscoWebexRemovalTool/CiscoWebexRemoveTool.exe" Invoke-WebRequest -UseBasicParsing $URL -OutFile "$Env:windir\NCentral\Cache\$Tool" Get-Process "Outlook" -ErrorAction SilentlyContinue | ForEach-Object { Stop-Process $_ -Force -ErrorAction SilentlyContinue } "$Env:windir\NCentral\Cache\$Tool /s" | cmd } #Region Script Start If ((Test-Path "C:\Temp\Script Cache") -eq $False) { New-Item -ItemType directory -Path "C:\Temp\Script Cache" } Invoke-WebRequest -UseBasicParsing "https://scripts.gabesville.com/Gabesville/Powershell-Scripts/raw/branch/main/Functions%20Scripts/Functions.ps1" -outfile "C:\Temp\Script Cache\Functions.ps1" . "C:\Temp\Script Cache\Functions.ps1" #Check to see if program is installed $Applist = Get-Software | Sort-Object -Descending If ($Applist | Where-Object { $_.DisplayName -eq $App_Name }) { Uninstall-App_WMIobject Start-Sleep 30 If (Get-Software | Where-Object { $_.DisplayName -eq $App_Name }) { Uninstall-App } Uninstall-App3 Test-Uninstall } Else { Write-Output "$App_Name msi is not installed" Test-Uninstall } #Region Script End