Windows 如何获取“的列表”;“查看已安装的更新”;在;节目及特色;在控制面板中使用Powershell?

Windows 如何获取“的列表”;“查看已安装的更新”;在;节目及特色;在控制面板中使用Powershell?,windows,powershell,scripting,Windows,Powershell,Scripting,尝试获取所有已安装的更新(包括Acrobat等第三方应用程序的更新),单击控制面板“程序和功能”中的“查看已安装的更新” 以下方法没有帮助,可能是因为它们仅限于Microsoft/Windows: New-Object -ComObject Microsoft.Update.Session Get-WmiObject Win32_QuickfixEngineering 谢谢您可以使用以下cmdlet获取计算机上已安装更新的完整列表(包括第三方应用程序更新): 此cmdlet返回每个对象的全部

尝试获取所有已安装的更新(包括Acrobat等第三方应用程序的更新),单击控制面板“程序和功能”中的“查看已安装的更新”

以下方法没有帮助,可能是因为它们仅限于Microsoft/Windows:

New-Object -ComObject Microsoft.Update.Session
Get-WmiObject Win32_QuickfixEngineering


谢谢

您可以使用以下cmdlet获取计算机上已安装更新的完整列表(包括第三方应用程序更新):


此cmdlet返回每个对象的全部属性,包括DisplayName、DisplayVersion、Language、EstimatedSize、PSPath等。您可以在上述cmdlet之后通过管道
|选择,
筛选出需要获取的属性。

我假设您需要msu提供程序的包:

get-package -ProviderName msu


Name                           Version          Source                     ProviderName
----                           -------          ------                     ------------
Update for Microsoft Defend...                                             msu
Security Intelligence Updat...                                             msu
Security Intelligence Updat...                                             msu

我找到了以下选项:

$x = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object { $_.DisplayName -like "*foo*" }
$y = Get-ItemProperty HKLM:\SOFTWARE\Classes\Installer\Dependencies\* | Where-Object {$_.DisplayName -like "*foo*" }
在$x中,您拥有“卸载程序”中的软件;在$y中,您拥有“已安装更新”中的更新

我对它不是很满意,我想知道windows如何将$x和$y链接在一起,而不只是搜索名称

也许有人能帮我们修复缺失的部分:-)

编辑

我找到了解决办法:

Get-ItemProperty HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object { $_.ParentDisplayName -like "*foo*" }

这将返回一个对象,其中
ParentDisplayName
是您的程序,
DisplayVersion
是更新版本。

谢谢,但我要查找的参数:更新名称、版本、程序、发布者、安装位置在此方法上不可用(get package-ProviderName msu)。谢谢,但此方法仅列出已安装的应用程序,不是更新。@作为一种解决方法,您可以使用此逻辑并增强它以跟踪版本号(将其存储到文件或某处),然后使用此cmdlet检查当前版本,并与是否安装了更新进行比较。它已经为您提供了所需的所有必要参数。
Get-ItemProperty HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object { $_.ParentDisplayName -like "*foo*" }