Hi,
Its typical for the "uninstallstring" to actually be an installation string so if you wish to script it silently the string needs to be modified slightly. This should get you started on removal:
Get-ChildItem -Path "HKLM:SOFTWARE\wow6432node\Microsoft\Windows\CurrentVersion\Uninstall","HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" -Recurse |
Where {$_.GetValue("DisplayName") -like "*zip*"} |
ForEach-Object {
$dn = $_.GetValue("DisplayName")
$uninstallGUID = "{" + $_.GetValue("UninstallString").Split("{")[-1]
Start-Process -FilePath "msiexec.exe" -ArgumentList "/X", $uninstallGUID, "/qb"
}
Line1 list both uninstall locations so you should pickup 32 and 64bit versions.
Line 5 added a leading curly bracket, then splits the uninstallstring at the first curly bracket and appends the last part of the split leaving you with a complete GUID
Line 6 uses start process to run msiexec.exe passing arguments to uninstall (/X), the GUID of what you wish to uninstall and finally quiet mode to make it not prompt. For troubleshooting and initial runs I always use /qb as that is quiet with basic UI so you can see it actually pops up and runs. When your happy you can change that to /qn which is quiet with no UI.
As its an assignment I'm not going to post a complete solution :)