下面是我在 Windows 10 上运行的用于卸载的 PowerShell 脚本HP 支持助手但它不断提示最终用户输入诸如此类的信息,而这正是我需要防止的。
问题:如何才能静默地或无需用户交互地卸载此应用程序?
笔记:我能够以管理员权限远程访问这些机器。
PowerShell 脚本
$laptops = Get-Content "c:\scripts\laptops.txt";
$laptops | %{
$app = Get-WmiObject Win32_Product -ComputerName $_ | ?{$_.name -eq "HP Support Assistant"};
$app.Uninstall();
};
答案1
首先,您必须检查静默卸载命令。
为此我通常使用这个工具:https://www.nirsoft.net/utils/uninstall_view.html
UninstallView 是一款适用于 Windows 的工具,可收集有关系统上安装的所有程序的信息,并在一个表中显示已安装程序的详细信息。您可以使用它来获取本地系统、网络上的远程计算机以及插入计算机的外部硬盘驱动器的已安装程序信息。它还允许您轻松卸载本地计算机和远程计算机上的软件(如果安装程序支持,包括静默卸载)。
该工具显示静默卸载命令。
如果找到该命令,请手动尝试。有时,即使提供了命令,静默卸载也无法按预期工作。
其次,我的建议是不要使用 WMI 进行卸载,因为它在确定已安装的程序方面很慢。而是检查注册表项,该工具也会显示该项。
为了更加通用,请阅读这些键
HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
使用 where 语句搜索 DisplayName 并在 quietuninstall 键中执行命令。
答案2
静默卸载应用程序
要卸载应用程序,您可以将卸载过程作为启动脚本运行,这样就不需要任何最终用户输入或交互来完成卸载操作。
由于您正在使用 PowerShell,并且已经有确认卸载所需应用程序的逻辑,因此提供的示例将以此为基础,以使其保持简单和基础。
此外,由于您使用的是 Windows 10,因此我将提供一种额外但不同(且更有效)的方法来使用 PowerShell 卸载软件包。
PowerShell 脚本(现有逻辑)
笔记:将其保存到
C:\Scripts\Test.ps1
本地计算机或您授予的 UNC 路径Domain Computers
和/或Authenticated Users
文件夹和共享中。$app = Get-WmiObject -Class Win32_Product | ?{$_.name -eq "HP Support Assistant"}; $app.Uninstall();
PowerShell 脚本(更高效的逻辑)
$pName = "HP Support Assistant"; Get-Package $pName | Uninstall-Package;
使用组策略设置作为启动脚本运行
笔记:在本地计算机上使用
gpedit.msc
脚本作为启动脚本运行,或者如果适用于域环境,则可以使用 Active Directory 中的组策略。
- 去
gpedit.msc
- 瀏覽
Computer Configurations
|Windows Settings
|Scripts (Startup/Shutdown)
- 点击
Startup
|PowerShell Scripts
标签 |Add
选项 - 将
Script Name
字段指向启动脚本位置的完整路径 按
OK
和/或Apply
退出所有现有屏幕以保存设置最后,你只需重新启动计算机确保启动脚本运行并卸载应用程序,而无需任何用户交互或输入。
其他潜在解决方案
根据HP 静默卸载 HP 支持助手发布后,您还可以在登录时卸载 HP Support Assistant 应用程序,而不是以登录脚本的方式静默卸载:
"C:\Program Files (x86)\Hewlett-Packard\HP Support Framework\UninstallHPSA.exe" /s /v /qn