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
类,涵盖了其用法和实际应用。从软件清单到安装管理,这些示例展示了强大的软件管理功能。通过这些知识,您可以为您的系统管理脚本添加强大的软件管理功能。