windows - 使用 Powershell 的已安装程序的完整列表

标签 windows powershell

我们用下面的命令找到了at this link尝试获取 Windows 中已安装程序的完整列表:

Get-WmiObject -Class Win32_Product 

但是,与“控制面板”中的已安装程序列表相比,这给出了一个不完整的已安装程序列表。

我们的初衷是有一个脚本可以交互地最终自动卸载安装在计算机上的英国媒体报道软件。但是,上面的命令遗漏了一些我们也想卸载的命令。

是否有我们可以查看的另一个 Class 以获得完整列表?或者我们可以使用另一个命令吗? 任何见解表示赞赏

最佳答案

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

关于windows - 使用 Powershell 的已安装程序的完整列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53161112/

相关文章:

windows - 无法在 Windows 7 的 MinGW32 中创建简单的 Git 别名

windows - 为什么没有64位版本的VS2013?

json - 在Powershell中遍历JSON数据

powershell - 忽略 Powershell 中文本字符串中的引号

c++ - 在笔记本电脑上读取当前电池充电/放电率

c++ - 如何从 ULONGLONG 毫秒创建 SYSTEMTIME 结构?

windows - 批处理文件来编辑注册表值?

sql-server - 尝试使用 powershell 从 Azure 恢复数据库时,Octopus 部署找不到 SQL 凭据

json - 来自 Powershell 的 Mongodb Find() 查询

sql-server - 从 Visual Studio 运行时,PowerShell 脚本结果不同