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

rm-*_*nda 7 windows powershell

我们使用此链接中的以下命令来尝试获取 Windows 中已安装程序的完整列表:

Get-WmiObject -Class Win32_Product 
Run Code Online (Sandbox Code Playgroud)

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

我们的初衷是有一个脚本,可以交互地最终自动卸载计算机上安装的臃肿软件。然而,上面的命令遗漏了一些我们想要卸载的内容。

我们还Class可以研究其他内容以获得完整的列表吗?或者我们可以使用另一个命令吗?任何见解表示赞赏

Don*_*ank 12

cmdletGet-Package提供的信息比类更多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
Run Code Online (Sandbox Code Playgroud)

这一项包括额外的条目。您应该能够看到它包含来自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
Run Code Online (Sandbox Code Playgroud)

从提供商那里删除软件包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"
}
Run Code Online (Sandbox Code Playgroud)

然后你可以使用以下命令卸载:

$Package = Get-Package "botframework-emulator"
Uninstall-Program $Package
Run Code Online (Sandbox Code Playgroud)