我需要为我的工作跟踪旧版本的软件。我需要报告总安装实例和最新实例。Adobe Flash Player 和 Adobe Air 一起跟踪。目前我们检查报告并手动添加每个版本的编号。我还拉旧版本尝试手动远程修补。
这是我列出所有实例的查询语句
select SMS_R_System.Name, SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName, SMS_G_System_ADD_REMOVE_PROGRAMS.Version from SMS_R_System inner join SMS_G_System_ADD_REMOVE_PROGRAMS on SMS_G_System_ADD_REMOVE_PROGRAMS.ResourceID = SMS_R_System.ResourceId where SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName like "%Adobe AIR%" and SMS_G_System_ADD_REMOVE_PROGRAMS.InstallDate is not null or SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName like "%Adobe Flash Player%" order by SMS_R_System.Name
这不是问题,但是当我尝试提取所有太旧的版本时,这并不容易。可接受的版本是 Adobe Air 19.0.0.190、Adobe Flash Player 18.0.0.241 和 Adobe Flash Player 19.0.0.190。
select SMS_R_System.Name, SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName, SMS_G_System_ADD_REMOVE_PROGRAMS.Version from SMS_R_System inner join SMS_G_System_ADD_REMOVE_PROGRAMS on SMS_G_System_ADD_REMOVE_PROGRAMS.ResourceID = SMS_R_System.ResourceId where SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName like "%Adobe AIR%" and SMS_G_System_ADD_REMOVE_PROGRAMS.InstallDate is not null and (SMS_G_System_ADD_REMOVE_PROGRAMS.Version like "[0-9].%" or SMS_G_System_ADD_REMOVE_PROGRAMS.Version like "1[0-8].%" or SMS_G_System_ADD_REMOVE_PROGRAMS.Version like "19.0.0.[0-9]" or SMS_G_System_ADD_REMOVE_PROGRAMS.Version like "19.0.0.[0-9][0-9]" or SMS_G_System_ADD_REMOVE_PROGRAMS.Version like "19.0.0.1[0-8][0-9]") or SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName like "%adobe flash player%" and (SMS_G_System_ADD_REMOVE_PROGRAMS.Version like "[0-9].%" or SMS_G_System_ADD_REMOVE_PROGRAMS.Version like "1[0-7].%" or SMS_G_System_ADD_REMOVE_PROGRAMS.Version like "18.0.0.[0-9]" or SMS_G_System_ADD_REMOVE_PROGRAMS.Version like "18.0.0.[0-9][0-9]" or SMS_G_System_ADD_REMOVE_PROGRAMS.Version like "18.0.0.1[0-9][0-9]" or SMS_G_System_ADD_REMOVE_PROGRAMS.Version like "18.0.0.2[0-3][0-9]" or SMS_G_System_ADD_REMOVE_PROGRAMS.Version like "18.0.0.240" or SMS_G_System_ADD_REMOVE_PROGRAMS.Version like "19.0.0.[0-9]" or SMS_G_System_ADD_REMOVE_PROGRAMS.Version like "19.0.0.[0-9][0-9]" or SMS_G_System_ADD_REMOVE_PROGRAMS.Version like "19.0.0.1[0-7][0-9]" or SMS_G_System_ADD_REMOVE_PROGRAMS.Version like "19.0.0.18[0-4]") order by SMS_R_System.Name
这可行,但是当版本发生变化时,几乎不可能在不搞砸的情况下进行更新。我把两个列表都拉出来,比较了 4 到 5 次,以找到我遗漏的内容。
反正有 SCCM/MS SQL 来比较版本号吗?
WHERE Version < 19.0.0.190
我尝试了一个基于此的查询,但它似乎是按数字或类似的效果进行比较。例如(7.2 > 7.11 或 7.0.1.0 > 16.0.0.111)我还没有找到 SCCM 特定的解决方案。如果 MS 不支持更好的方法,我会感到震惊。
这只是一个例子。我们跟踪的程序很多,有些带有#.# 版本,有些带有#.#.#.# 版本,而这种颠覆或多或少取决于版本。一个灵活的解决方案将是惊人的。
很抱歉格式非常糟糕。我自学并没有接触过 SQL,因为 3 年前的两周课程是 MS 访问。