ZetCode

VBScript Win32_Product 类

最后修改于 2025 年 4 月 9 日

VBScript 中的 Win32_Product 类是 Windows Management Instrumentation (WMI) 的一部分。它代表 Windows 系统上已安装的软件产品。此类提供有关每个已安装应用程序的详细信息。它通常用于软件清单和管理任务。

Win32_Product 包含诸如名称、版本、供应商和安装日期之类的属性。它还可以执行安装和卸载等操作。本教程将通过实际示例介绍 Win32_Product 的用法。

Win32_Product 类概述

Win32_Product 类是一个 WMI 提供程序,用于查询已安装的 MSI 包。它继承自 CIM_Product,并提供其他特定于 Windows 的属性。每个实例代表一个已安装的产品。

关键属性包括 NameVersionVendorInstallUninstall 等方法允许进行包管理。了解此类有助于创建强大的软件管理脚本。

列出所有已安装的产品

此示例演示了如何使用 Win32_Product 查询所有已安装的产品。它展示了基本的 WMI 连接设置和属性访问。脚本会输出产品名称、版本和供应商。

list_products.vbs
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colProducts = objWMIService.ExecQuery("SELECT * FROM Win32_Product")

For Each objProduct in colProducts
    WScript.Echo "Name: " & objProduct.Name
    WScript.Echo "Version: " & objProduct.Version
    WScript.Echo "Vendor: " & objProduct.Vendor
    WScript.Echo "--------------------------------"
Next

该脚本连接到 WMI 并查询所有 Win32_Product 实例。它会遍历集合并显示关键属性。请注意,此查询在具有许多产品的系统上可能需要几秒钟才能完成。

查找特定产品信息

此示例展示了如何筛选 Win32_Product 查询以查找特定应用程序。它演示了 WQL (WMI 查询语言) 筛选。脚本会搜索名称包含部分匹配的产品。

find_product.vbs
productName = "Microsoft Office"

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
query = "SELECT * FROM Win32_Product WHERE Name LIKE '%" & productName & "%'"
Set colProducts = objWMIService.ExecQuery(query)

If colProducts.Count = 0 Then
    WScript.Echo "No products found matching: " & productName
Else
    For Each objProduct in colProducts
        WScript.Echo "Found: " & objProduct.Name & " (" & objProduct.Version & ")"
    Next
End If

脚本使用 WQL LIKE 运算符查找包含“Microsoft Office”的产品。它会处理未找到匹配项的情况。此方法对于在脚本中验证软件安装非常有用。

检查产品安装日期

此示例演示了如何访问产品的安装日期属性。InstallDate 属性以 UTC 格式返回一个字符串。脚本会将此字符串转换为更易读的格式。

installation_date.vbs
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colProducts = objWMIService.ExecQuery("SELECT Name, InstallDate FROM Win32_Product")

For Each objProduct in colProducts
    If Not IsNull(objProduct.InstallDate) Then
        installDate = Mid(objProduct.InstallDate, 7, 2) & "/" & _
                     Mid(objProduct.InstallDate, 5, 2) & "/" & _
                     Left(objProduct.InstallDate, 4)
        WScript.Echo objProduct.Name & " was installed on " & installDate
    End If
Next

脚本从 UTC 格式的字符串中提取年、月和日。然后将其重新格式化为更常见的日期显示。请注意,某些产品可能没有可用的安装日期信息。

卸载产品

此示例展示了如何使用 Uninstall 方法卸载产品。它展示了卸载过程的错误处理。脚本会尝试卸载指定的产品。

uninstall_product.vbs
productName = "Example Application"

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
query = "SELECT * FROM Win32_Product WHERE Name = '" & productName & "'"
Set colProducts = objWMIService.ExecQuery(query)

For Each objProduct in colProducts
    WScript.Echo "Attempting to uninstall: " & objProduct.Name
    result = objProduct.Uninstall()
    
    If result = 0 Then
        WScript.Echo "Uninstallation succeeded"
    Else
        WScript.Echo "Uninstallation failed with error: " & result
    End If
Next

脚本通过精确名称匹配查找产品,并调用其 Uninstall 方法。返回值 0 表示成功。其他值表示各种错误情况。卸载通常需要管理员权限。

安装产品

此示例演示了如何使用 Install 方法安装产品。它展示了如何指定 MSI 包路径和安装选项。脚本提供基本的错误处理。

install_product.vbs
msiPath = "C:\Install\ExampleApp.msi"
options = "REBOOT=ReallySuppress /quiet"

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set objProduct = objWMIService.Get("Win32_Product")

result = objProduct.Install(msiPath, options, True)

If result = 0 Then
    WScript.Echo "Installation succeeded"
Else
    WScript.Echo "Installation failed with error: " & result
End If

脚本使用带有路径和选项参数的 Install 方法。第三个参数启用安装日志记录。需要管理员权限。选项字符串遵循标准的 MSI 安装程序命令行语法。

来源

Win32_Product 类文档

在本文中,我们探讨了 VBScript 中的 Win32_Product 类,涵盖了其用法和实际应用。从软件清单到安装管理,这些示例展示了强大的软件管理功能。通过这些知识,您可以为您的系统管理脚本添加强大的软件管理功能。

作者

我叫 Jan Bodnar,是一名充满热情的程序员,拥有多年的编程经验。我自 2007 年以来一直在撰写编程文章。到目前为止,我已撰写了 1400 多篇文章和 8 本电子书。我在教学编程方面有八年以上的经验。

列出所有 VBScript 教程