# removeAppwizProgram.ps1
# Version 0.02
$computernames=@(
'SERVER0001',
'SERVER0002'
)
$appName='Dell EMC OpenManage Systems Management Software (64-Bit)'
function removeAppwizProgram($computernames=$env:computername,$appName='Firefox'){
$results=[hashtable]@{}
foreach($computer in $computernames){
$session=new-pssession $computer
if($session.State -eq 'Opened'){
$result=invoke-command -session $session -scriptblock{
param($appName)
write-host "Checking $env:computername..."
try{
# Method 1: try using the Uninstall method of the application packager
$app=Get-WmiObject -Class Win32_Product -Filter "Name='$appName'"
if($app.Name -eq $appName){
write-host "Uninstalling $app"
# pause
$null=$app.Uninstall()
$appStillExists=Get-WmiObject -Class Win32_Product -Filter "Name='$appName'"
if($appStillExists){
write-host "'$appName' still exists"
# Method 2: Using Registry
$uninstallStringRegPaths='HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall','HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall'
$uninstallStrings=Get-ChildItem -Path $uninstallStringRegPaths
$uninstallString=($uninstallStrings|Get-ItemProperty|Where-Object {$_.DisplayName -match $appName}).UninstallString
if($uninstallString.count -eq 1){
$appCode=[regex]::match($uninstallString,'\{(.*)\}').Value
$uninstallCommand="& msiexec.exe /x $appCode /quiet /norestart"
write-host "Invoking uninstall Command: $uninstallCommand"
Invoke-Expression $uninstallCommand
$appStillExists=Get-WmiObject -Class Win32_Product -Filter "Name='$appName'"
if($appStillExists){
write-warning "Uninstall has been unsuccessful at removing $appName"
return $false
}else{
return $true
}
}else{
write-warning "Please check this/these uninstall string(s):`r`n$uninstallString"
return $false
}
}else{
write-host "'$appName' has been removed"
return $true
}
}else{
write-host "No matches for $appName"
return $true
}
}catch{
write-warning $_
return $false
}
} -Args $appName
$results+=@{$computer=$result}
remove-pssession $session
}else{
write-warning "Unable to connect to $computer"
$results+=@{$computer=$null}
}
}
return $results
}
removeAppwizProgram $computernames $appName
Categories: