优化Windows Server 2016/2019的SCCM补丁自动安装查询
SCCM自动补丁安装集合查询优化
原逻辑与问题
- 原查询筛选系统安装时间处于4-72小时内的Windows Server 2016/2019服务器,加入自动补丁安装集合
- 痛点:部分网络差的站点无法在72小时窗口内完成补丁安装,需优化逻辑,排除已在系统安装后成功安装过补丁的服务器(不延长时间窗口)
优化后的查询语句
select SMS_R_SYSTEM.ResourceID, SMS_R_SYSTEM.ResourceType, SMS_R_SYSTEM.Name, SMS_R_SYSTEM.SMSUniqueIdentifier, SMS_R_SYSTEM.ResourceDomainORWorkgroup, SMS_R_SYSTEM.Client from SMS_R_System inner join SMS_G_System_OPERATING_SYSTEM on SMS_G_System_OPERATING_SYSTEM.ResourceID = SMS_R_System.ResourceId where -- 保留原时间窗口筛选:系统安装后4-72小时内 DATEDIFF(HH, SMS_G_System_OPERATING_SYSTEM.InstallDate, GETDATE()) <= 72 AND DATEDIFF(HH, SMS_G_System_OPERATING_SYSTEM.InstallDate, GETDATE()) >= 4 -- 排除系统安装后已安装过补丁的服务器 AND SMS_R_System.ResourceID NOT IN ( SELECT arp.ResourceID FROM SMS_G_System_ADD_REMOVE_PROGRAMS arp WHERE -- 识别补丁类程序(可根据实际环境调整) (arp.DisplayName LIKE '%KB%' OR arp.Publisher = 'Microsoft Corporation') AND arp.InstallDate > SMS_G_System_OPERATING_SYSTEM.InstallDate )
关键逻辑说明
- 通过关联
SMS_G_System_ADD_REMOVE_PROGRAMS视图获取服务器已安装的程序记录,筛选出微软发布的KB补丁 - 子查询找出所有补丁安装时间晚于系统安装时间的服务器ID,主查询用
NOT IN排除这些服务器 - 仅保留系统安装后未安装过任何补丁的服务器,确保需要补打的服务器留在集合中,已完成补丁安装的自动排除
内容的提问来源于stack exchange,提问作者Keith
相关产品推荐
相关产品推荐

