簡體   English   中英

使用 Powershell 卸載應用程序

[英]Uninstall application using Powershell

我的虛擬機上安裝了第 3 方代理,我需要使用 Powershell 將其刪除。

它顯示在控制面板中,添加/刪除程序但不顯示使用get-wmiobjectget-itemproperty hklm 卸載注冊表項路徑:

get-itemproperty HKLM:\\software\microsoft\windows\currentversion\uninstall* | select-object displayname, displayversion, publisher

其他人知道我可以使用腳本刪除它的方法嗎?

將來包括您嘗試過的任何代碼,即使它不起作用! 僅僅列出您嘗試過的命令的名稱並不是很有用,因為我們看不到您在做什么,因此必須猜測。 因此,您收到了不相關的評論和答案。


現在您終於顯示了您的代碼(我已經編輯了您的答案以將其包含在評論中,因為它隱藏在評論中),我可以看到您只檢查了兩個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 - 您可能無法同時使用這兩者,這取決於應用程序。

只是為了添加到 Henrycarteruk 的帖子,您可以將命令 pipe 發送到 cmd 以執行卸載字符串。

$app.QuietUninstallString | cmd

嘗試:

 $installedMsiObject = Get-WmiObject -Class Win32_Product | Where-Object { $_.PackageName -like "*YourPkgName* }
 if ($installedMsiObject) {
    try {
       $installedMsiObject.UnInstall() | Out-Null
    }
    catch {
       Write-Error "Error occurred: $_"
    }
 }

如果是 msi 安裝程序(powershell 5.1),這應該可以工作。 Powershell 7 不支持 msi 或程序提供程序。

get-package *softwarename* | uninstall-package

或者使用程序提供程序,您可能會看到卸載字符串,但必須為靜默卸載添加更多內容,例如“/S”。

get-package *softwarename* | % { $_.metadata['uninstallstring'] } 

這是一個舊帖子,但在這里回復以防它幫助其他人。 幾天來我一直在思考這個問題......

除了上面引用的 [2] HKLM 注冊表路徑(一個用於 32 位注冊表,另一個用於 64 位注冊表),您還需要查看HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall以便查詢“每用戶”安裝。 Chrome、MS Teams、Zoom、ReadyTalk Desktop 等應用程序默認安裝為“每用戶”。 您不會在 HKLM 下找到安裝程序/卸載程序信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM