使用 Powershell 的已安装程序的完整列表
Posted
技术标签:
【中文标题】使用 Powershell 的已安装程序的完整列表【英文标题】:Full Listing of Installed Programs using Powershell 【发布时间】:2019-04-09 05:01:19 【问题描述】:我们使用at this link 找到的以下命令来尝试获取 Windows 中已安装程序的完整列表:
Get-WmiObject -Class Win32_Product
但是,与“控制”面板中的已安装程序列表相比,这提供了不完整的已安装程序列表。
我们的初衷是有一个脚本可以交互并最终自动卸载安装在计算机上的英国媒体报道软件。但是,上面的命令遗漏了一些我们也想卸载的命令。
我们可以查看另一个Class
以获得完整列表吗?还是我们可以使用另一个命令?
任何见解表示赞赏
【问题讨论】:
如果您安装了 SCCM,您可以使用它添加的类。另一种方法是检查注册表中的安装/卸载项目。 ///// 顺便说一句,你可能会尽量避免Win32_Product
- 它会对它知道的所有应用程序运行完整性检查......并且有时会默默地将它们重置为默认配置。哎哟!
【参考方案1】:
Get-Package
cmdlet 比Win32_Product
类提供更多信息。以下是我的 Windows 10 系统上两者的区别:
PS C:\> Get-WmiObject -Class Win32_Product | Where-Object Name -Match TOSHIBA | Format-Table
IdentifyingNumber Name Vendor Version Caption
----------------- ---- ------ ------- -------
1E6A96A1-2BAB-43EF-8087-30437593C66C TOSHIBA System Driver Toshiba Corporation 2.00.0005 TOSHIBA System Driver
1515F5E3-29EA-4CD1-A981-032D88880F09 TOSHIBA Audio Enhancement Toshiba Corporation 3.0.0.9 TOSHIBA Audio Enhancement
716C8275-A4A9-48CB-88C0-9829334CA3C5 Toshiba Quality Application TOSHIBA 1.0.9.7 Toshiba Quality Application
E4C7D9D7-19D4-4623-AF0C-EA313C466411 Toshiba TEMPRO Toshiba Europe GmbH 5.0.0 Toshiba TEMPRO
72EFCFA8-3923-451D-AF52-7CE9D87BC2A1 TOSHIBA eco Utility Toshiba Corporation 3.0.1.6403 TOSHIBA eco Utility
B040D5C9-C9AA-430A-A44E-696656012E61 TOSHIBA System Settings Toshiba Corporation 3.0.3.6400 TOSHIBA System Settings
0B39C39A-3ECE-4582-9C91-842D22819A24 TOSHIBA Display Utility Toshiba Corporation 2.0.1.0 TOSHIBA Display Utility
EDC626BA-3E59-44C4-96B4-9066E29BF600 TOSHIBA Service Station Toshiba Corporation 3.1.0.2 TOSHIBA Service Station
26BB68BB-CF93-4A12-BC6D-A3B6F53AC8D9 TOSHIBA Password Utility Toshiba Corporation 8.1.1.0 TOSHIBA Password Utility
B507386D-1F61-4E55-B05B-F56ACB0086B3 TOSHIBA PC Health Monitor Toshiba Corporation 5.01.02.6400 TOSHIBA PC Health Monitor
这一项包括额外的条目。您应该能够看到它包含来自 Programs
提供程序以及 msi
提供程序的条目。
PS C:\> Get-Package *TOSHIBA*
Name Version Source ProviderName
---- ------- ------ ------------
TOSHIBA System Driver 2.0.5 C:\Program Files (x86)\TOSHIB... msi
TOSHIBA Audio Enhancement 3.0.0.9 C:\Program Files\TOSHIBA\TOSH... msi
Toshiba Quality Application 1.0.9.7 C:\Program Files (x86)\Toshib... msi
Toshiba TEMPRO 5.0.0 C:\Program Files (x86)\Toshib... msi
TOSHIBA eco Utility 3.0.1.6403 C:\Program Files\TOSHIBA\Teco\ msi
TOSHIBA System Settings 3.0.3.6400 C:\Program Files\TOSHIBA\Syst... msi
TOSHIBA Display Utility 2.0.1.0 C:\Program Files\Toshiba\TOSH... msi
TOSHIBA Service Station 3.1.0.2 msi
TOSHIBA Password Utility 8.1.1.0 C:\Program Files\Toshiba\Pass... msi
TOSHIBA Password Utility 8.1.1.0 Programs
TOSHIBA PC Health Monitor 5.1.2.6400 C:\Program Files\TOSHIBA\TPHM\ msi
TOSHIBA Manuals 10.20 Programs
TOSHIBA Recovery Media Creator 3.3.00.8003 Programs
从Programs
提供程序中删除包实际上比听起来要难。那里的条目通常会有一个卸载命令或一个安静的卸载命令,但不能保证。对于有安静卸载字符串的情况,您可以执行以下操作:
function Uninstall-Program($Package)
$Command = foreach ($i in (0..($Package.Meta.Attributes.Keys.Count - 1)))
if ($Package.Meta.Attributes.Keys[$i] -eq 'QuietUninstallString')
$Package.Meta.Attributes.Values[$i]
Invoke-Expression "& $Command"
然后你可以卸载:
$Package = Get-Package "botframework-emulator"
Uninstall-Program $Package
【讨论】:
太棒了!并且肯定回答了这个问题——但是,我们似乎不能使用该方法返回的对象来卸载有问题的程序。知道最后一点的方法吗? @rm-vanda 你能用Uninstall-Package -name packageName
Uninstall-Package
cmdlet 不适用于某些条目。我在程序控制面板中添加了一个用于处理条目的部分。以上是关于使用 Powershell 的已安装程序的完整列表的主要内容,如果未能解决你的问题,请参考以下文章