除了win32_product之外,是否有更快的方法来查找已安装软件的产品编号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了除了win32_product之外,是否有更快的方法来查找已安装软件的产品编号相关的知识,希望对你有一定的参考价值。

我正在编写一个脚本来使用msiexec自动修复软件。我遇到的问题是,当我打电话时:

get-wmiobject -class win32_product -filter "name of software" | foreach-object {$_.IdentifyingNumber}

解析每个产品编号所需的时间将近5-10分钟。有更快的方法吗?

答案

正如Lee_Dailey所提到的,您可以从注册表中的卸载密钥中获取此信息。

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionUninstall

以下内容将为您提供安装了卸载密钥中的条目的应用程序的名称和GUID。 -match "^{.+}$"只返回以{开头并以}结尾的条目。如果你想要没有大括号{}的GUID输出,那么你可以把它投射到[GUID],例如[GUID][String]$matches.Values

Get-ChildItem HKLM:SOFTWAREMicrosoftWindowsCurrentVersionUninstall |
%{
    if(($_.Name | Split-Path -Leaf) -match "^{.+}$")
    {
        [PSCustomObject]@{
            GUID = [String]$matches.Values
            Name = [String]($_ | Get-ItemProperty -ErrorAction SilentlyContinue).DisplayName
        }
    }
}

输出:

GUID                                   Name                                                          
----                                   ----                                                          
{0CA4BB37-FF4A-42C6-A39C-11CB0BB8D395} Microsoft .NET Core Host - 2.1.8 (x64)                        
{1657ABEE-7D56-416A-B7E0-A89CC5AAD0F7} Microsoft Azure Compute Emulator - v2.9.6 
...

以上是关于除了win32_product之外,是否有更快的方法来查找已安装软件的产品编号的主要内容,如果未能解决你的问题,请参考以下文章

除了 pandas 和 dask 之外,还都有哪些更快的读取大数据集和应用行明智操作的方法?

除了 Smartscreen 之外,代码签名 EV 证书的优势是啥?

Win32 消息泵与 MFC 消息映射,哪个更快? C++

MTK elian(smartlink)在WIN32下的实现

除了多路复用和服务器推送之外,是啥让 http/2 比 http/1 更快?

除了 pentaho 中的插入/更新步骤之外,是不是有任何步骤或逻辑可以保持 SCD 类型 1?