我正在尝试从所有 Windows 计算机上卸载软件 7-Zip,但如果我使用标准流程使用其卸载字符串,它就能完成工作,但大多数人已将其安装在不同的驱动器上并复制文件夹多个位置,这不允许标准流程删除它的过程&现在存在多个与这些相关的漏洞。
因此寻找一些 prowershell 脚本,它可以在所有固定驱动器中搜索文件夹 7-Zip 并运行类似 %discovered path% -Zip\Uninstall.exe 的命令
如果您能提供帮助,我将不胜感激。
使用
CimMethod
找到产品后,只需调用卸载的 Get-CimInstance
即可。
运行以下命令来查找并删除任何版本的 7-zip。不是最快的,但运行它然后就忘记了。
Get-CimInstance -Class Win32_Product | Where-Object Name -Like '7-zip*' | `
Invoke-CimMethod -MethodName Uninstall
我认为这是通往幸福的颠倒之路。
相反,找到它的安装位置,然后运行卸载字符串:
Get-ChildItem -Path "HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
-Recurse | Where {$_.GetValue("DisplayName") -like "*7*zip*" }
| ForEach-Object {
$_.GetValue("DisplayName"); $_.GetValue("UninstallString") ;
; Start-Process $uninstall;
}
这仍然是一场核武新安装的军备竞赛,但至少每台机器都是动态的。
尝试使用微软的Winget。
WinGet 似乎是管理各种来源的 Windows 应用程序的终极工具。 Winget 可以安装应用程序,并卸载可能通过各种方式\来源安装的应用程序,例如 7zip。
例如,这适用于我的电脑:
winget.exe 安装 --exact --id 7zip.7zip
winget.exe 卸载 --id 7-Zip --silent --accept-source-agreements
winget.exe 卸载 --exact --id 7zip.7zip --silent --accept-source-agreements
备注:
7zip 可以手动安装,但 winget 仍会卸载它
静默使用的其他用途可能还需要 --accept-package-agreements 参数。
要搜索 7-Zip:
winget.exe 搜索 7zip
Name Id Version Match Source
---------------------------------------------------------------------------------------------------------------
9 ZIP - open rar, zip, 7zip, gzip 9NBLGGH3TDHG Unknown msstore
Easy Unrar - ZArchiver, Unzip & Zip, gzip, 7zip 9PLNC0QX58D9 Unknown msstore
7-Zip 7zip.7zip 22.00 Moniker: 7zip winget
7-Zip ZS mcmilk.7zip-zstd 21.03 ZS v1.5.0 R2 Tag: 7zip winget
NanaZip Preview M2Team.NanaZip.Preview 1.2.253.0 Tag: 7zip winget
NanaZip M2Team.NanaZip 1.2.252.0 Tag: 7zip winget
7-Zip Alpha (msi) 7zip.7zip.Alpha.msi 21.03.00.0 winget
7-Zip Alpha (exe) 7zip.7zip.Alpha.exe 21.04 beta winget
winget.exe升级7zip.7zip