function Invoke-UninstallProgram ($Computer) { Invoke-Command -ComputerName $Computer -SessionOption $(New-PSSessionOption -MaxConnectionRetryCount 1 -NoMachineProfile) -ScriptBlock { $target = Read-Host "Name of app to uninstall" $apps = Get-WmiObject -Class Win32_Product | Where-Object{$_.Name -match $target} if (-not ($apps -is [array])) { $apps = @($apps) } if ($apps.Length -eq 0) { Write-Host -ForegroundColor Red "No app matching '$target' found on $Computer" return } for ($i=0; $i -lt $apps.Length; $i++) { Write-Host "[$i] $($apps[$i].Name)" } $selection = Read-Host "Which app(s) do you want to uninstall?" if (-not ($selection)) { return } $selection = -split $selection foreach ($item in $selection) { Write-Host "[$item] $($apps[$item].Name)" } $res = Read-Host "Are you sure you want to delete this/these app(s)?" if (-not ($res -match "^[yY]")) { Write-Host -ForegroundColor Red "Uninstall Aborted" return } foreach ($item in $selection) { Write-Host "Uninstalling $($apps[$item].Name)" $res = $apps[$item].Uninstall() if ($res.ReturnValue) { Write-Warning "$appname failed to uninstall from $Computer with ReturnValue $($res.ReturnValue)" } } } }