我在虚拟机上安装了一个第三方代理,需要使用Powershell删除它。
它显示在控制面板中,添加/删除程序,但没有使用get-wmiobject
或get-itemproperty
hklm卸载注册表项路径显示:
get-itemproperty HKLM:\\software\microsoft\windows\currentversion\uninstall* | select-object displayname, displayversion, publisher
还有谁知道我可以使用脚本将其删除的方法吗?
答案 0 :(得分:0)
尝试:
$installedMsiObject = Get-WmiObject -Class Win32_Product | Where-Object { $_.PackageName -like "*YourPkgName* }
if ($installedMsiObject) {
try {
$installedMsiObject.UnInstall() | Out-Null
}
catch {
Write-Error "Error occurred: $_"
}
}
答案 1 :(得分:0)
将来包括您尝试过的所有代码,即使它不起作用!仅列出您尝试过的命令的名称并不是很有用,因为我们看不到您在做什么,因此必须猜测。因此,您有评论和不相关的答案。
现在您终于显示了您的代码(我已经编辑了您的答案以将其隐藏在注释中),我可以看到您只是在检查两个Uninstall
关键位置之一
在64位操作系统(当今大多数计算机)上,有两个位置:
HKLM:\SOFTWARE\Microsoft [..]
HKLM:\SOFTWARE\Wow6432Node\Microsoft [..]
以下是有关如何在其中搜索firefox的示例:
$RegPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall"
$app = Get-ChildItem -Path $RegPath | Get-ItemProperty | Where-Object {$_.DisplayName -match "firefox" }
然后您可以执行$app.QuietUninstallString
或$app.UninstallString
-您可能无法同时使用两者,具体取决于应用程序。
答案 2 :(得分:0)
如果是msi安装程序(powershell 5.1),这应该可以工作。 Powershell 7不支持msi或程序提供程序。
get-package *softwarename* | uninstall-package
或者通过程序提供程序,您可能会看到卸载字符串,但是必须添加更多内容以进行静默卸载,例如“ / S”。
get-package *softwarename* | % { $_.metadata['uninstallstring'] }
答案 3 :(得分:-1)
这是一篇旧文章,但请在此回复,以防其他人使用。我为此打了好几天...
除了上面引用的[2] HKLM注册表路径(一个用于32位注册表,另一个用于64位注册表)之外,您还需要查看 HKCU:\ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall ,以查询“按用户”安装。 Chrome,MS Teams,Zoom,ReadyTalk Desktop等应用程序默认情况下以“每用户”身份安装。您不会在HKLM下找到安装程序/卸载程序信息。