diff --git a/App Uninstall Scripts/App - Webex - Uninstall.ps1 b/App Uninstall Scripts/App - Webex - Uninstall.ps1 new file mode 100644 index 0000000..0efd5c8 --- /dev/null +++ b/App Uninstall Scripts/App - Webex - Uninstall.ps1 @@ -0,0 +1,109 @@ +<# +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 \ No newline at end of file