109 lines
4.4 KiB
PowerShell
109 lines
4.4 KiB
PowerShell
|
|
<#
|
||
|
|
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
|