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 的属性。每个实例代表一个已安装的产品。
关键属性包括 Name、Version 和 Vendor。Install 和 Uninstall 等方法允许进行包管理。了解此类有助于创建强大的软件管理脚本。
列出所有已安装的产品
此示例演示了如何使用 Win32_Product 查询所有已安装的产品。它展示了基本的 WMI 连接设置和属性访问。脚本会输出产品名称、版本和供应商。
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 查询语言) 筛选。脚本会搜索名称包含部分匹配的产品。
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 格式返回一个字符串。脚本会将此字符串转换为更易读的格式。
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 方法卸载产品。它展示了卸载过程的错误处理。脚本会尝试卸载指定的产品。
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 包路径和安装选项。脚本提供基本的错误处理。
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 安装程序命令行语法。
来源
在本文中,我们探讨了 VBScript 中的 Win32_Product 类,涵盖了其用法和实际应用。从软件清单到安装管理,这些示例展示了强大的软件管理功能。通过这些知识,您可以为您的系统管理脚本添加强大的软件管理功能。