微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用Powershell在控制面板的“程序和功能”中获取“查看已安装的更新”列表?

如何解决如何使用Powershell在控制面板的“程序和功能”中获取“查看已安装的更新”列表?

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

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

f1 xs = sum (map foldT xs)
-- f1 = sum . map foldT

Example: I want to get KB2565063 from attached image below

谢谢

解决方法

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

Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*

此cmdlet会为每个对象返回很多属性,包括DisplayName,DisplayVersion,语言,EstimatedSize,PSPath等。您可以通过在上述cmdlet之后通过管道| select <property_name1>,<property_name2>来过滤需要获取的属性。

,

我假设您要与msu提供程序一起打包:

Object
,

我发现了以下选项:

$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是更新版本。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。