73 lines
2.5 KiB
PowerShell
73 lines
2.5 KiB
PowerShell
|
|
<#
|
||
|
|
Author: Gabe Kerntke
|
||
|
|
Date: 12-17-2024
|
||
|
|
|
||
|
|
.Synopsis
|
||
|
|
|
||
|
|
.Modified
|
||
|
|
2024-12-17 (GabeK) - Original script created
|
||
|
|
#>
|
||
|
|
|
||
|
|
# Variables #
|
||
|
|
|
||
|
|
# Functions #
|
||
|
|
|
||
|
|
Function Stop-PuTTYProcess {
|
||
|
|
$puttyProcess = Get-Process -Name "putty" -ErrorAction SilentlyContinue
|
||
|
|
if ($puttyProcess) {
|
||
|
|
Write-Output "Stopping PuTTY process..."
|
||
|
|
Stop-Process -Name "putty" -Force
|
||
|
|
}
|
||
|
|
}
|
||
|
|
Function Remove-PuTTY {
|
||
|
|
param (
|
||
|
|
[string]$path
|
||
|
|
)
|
||
|
|
$paths = "$env:ProgramFiles\PuTTY", "$env:ProgramFiles(x86)\PuTTY"
|
||
|
|
foreach ($path in $paths) {
|
||
|
|
if (Test-Path "$path\unins000.exe") {
|
||
|
|
Write-Output "Deleting $path\putty.exe..."
|
||
|
|
Remove-Item -Force "$path\putty.exe"
|
||
|
|
Write-Output "Uninstalling PuTTY EXE Found in $path ..."
|
||
|
|
Start-Process -FilePath "$path\unins000.exe" -ArgumentList "/SILENT" -Wait
|
||
|
|
}
|
||
|
|
elseif (Test-Path "$path\putty.exe") {
|
||
|
|
Write-Output "Deleting $path\putty.exe..."
|
||
|
|
Remove-Item -Force "$path\putty.exe"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
Function Remove-PuttyMSI {
|
||
|
|
$AppName = "PuTTY"
|
||
|
|
#-------------------------------------------------------------------------------
|
||
|
|
Write-Output "Checking if there are any msi-based installations for $AppName..."
|
||
|
|
#-------------------------------------------------------------------------------
|
||
|
|
FOREACH ( $Architecture in "SOFTWARE", "SOFTWARE\Wow6432Node" ) {
|
||
|
|
$UninstallKeys = "HKLM:\$Architecture\Microsoft\Windows\CurrentVersion\Uninstall"
|
||
|
|
IF (Test-path $UninstallKeys) {
|
||
|
|
Write-Output "Checking for $AppName installation in $UninstallKeys"
|
||
|
|
$GUID = Get-ItemProperty -Path "$UninstallKeys\*" |
|
||
|
|
Where-Object -FilterScript { $_.DisplayName -like "$AppName*" } |
|
||
|
|
Select-Object PSChildName -ExpandProperty PSChildName
|
||
|
|
IF ( $GUID ) {
|
||
|
|
$GUID | ForEach-Object {
|
||
|
|
Write-Output "Uninstalling: $(( Get-ItemProperty "$UninstallKeys\$_" ).DisplayName) "
|
||
|
|
Start-Process -Wait -FilePath "MsiExec.exe" -ArgumentList "/X$_ /qn /norestart"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
ELSE {
|
||
|
|
Write-Output "$AppName installation not found in $UninstallKeys"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Start Script #
|
||
|
|
|
||
|
|
# Stop PuTTY process if running
|
||
|
|
Stop-PuTTYProcess
|
||
|
|
# Check and delete PuTTY installations
|
||
|
|
Write-Output "Checking for PuTTY EXE Installations..."
|
||
|
|
Remove-PuTTY
|
||
|
|
Write-Output "Checking for PuTTY MSI Installations..."
|
||
|
|
Remove-PuTTYMSI
|
||
|
|
# End Script #
|