WMI筛选器以排除/包括特定版本的应用程序

时间:2019-07-01 03:08:40

标签: wmi gpo wql

我正在尝试编写一个 WQL查询,以过滤特定版本的Firefox上的计算机。

我想在GPO上使用此WMI筛选器,以检查该版本是否早于或等于或高于特定版本:60.8.0.0 esr。

目标是将具有旧版本的计算机和用户与具有新版本的计算机分开

几天后将重新安装数百台计算机,其最新版本为68.0 esr 。使用SCCM,可以轻松地对特定产品(如Firefox)执行全新安装,而本例中的最新版本为68esr,而阻止另一产品的升级。 较早版本的计算机的最新版本为60.7.0.2。其他较旧的版本也存在。

实际上,一些参数和自制脚本用于配置浏览器(计算机和用户范围)特战组策略,而某些参数似乎不起作用。我必须选择一个版本以应用Mozilla的官方ADMX。从最新版本开始,firefox.exe可以直接读取在GPO中编辑并存储在HKLM/SOFTWARE/Policies/Firefox中的注册表策略。

就我而言,我必须使用两种Firefox:

  • 新计算机和一个简单的新GPO(计算机范围)
  • 具有GPO(用户和计算机范围)的
  • 旧计算机,可以使用自制脚本复制某些文件。

不幸的是,无法将计算机或用户分隔在不同的组织单位中。
一方面,WMI筛选器似乎是对新计算机执行此操作的最佳方法。
另一方面,通过SCCM更新Firefox的计算机将很容易被包含在新参数中,而无需手动进行操作。
我尝试了这种WQL请求:

SELECT * FROM Win32Reg_AddRemovePrograms
WHERE (DisplayName LIKE '%Firefox%') AND (Version LIKE '60.8.0%')

除非通过列出每个版本来排除/包含它们,否则我将无法执行此操作,因为Version似乎是一个字符串值,而且我不知道如何将其转换为整数或使用字符“ ”。

1 个答案:

答案 0 :(得分:0)

我已经可以在一个WMI筛选器上定义多个查询,并且要记住,多次查询同一个WMI类会降低性能。

它似乎像描述here一样与AND关系。

不幸的是,它不能解决我的问题。

所以我开始使用WMI LIKE operators and different range of character。 就我而言:

  • 使用新版本的Firefox ESR(低于68.0)的新计算机
SELECT DisplayName, Version
  FROM Win32Reg_AddRemovePrograms
 WHERE (DisplayName LIKE '%Firefox%')
   AND ((NOT Version LIKE '[0-5][0-9].[0-9]%') 
   AND (NOT Version LIKE '6[0-7].[0-9]%'))
  • 装有更新版本的Firefox ESR(大于68.0)的旧计算机
SELECT DisplayName, Version 
  FROM Win32Reg_AddRemovePrograms 
 WHERE (DisplayName LIKE '%Firefox%') 
   AND ((Version LIKE '[0-5][0-9].[0-9]%') OR (Version LIKE '6[0-7].[0-9]%'))