SCCM query to count missing and installed updates

Hi guys, I'm looking for a couple of queries. Hopefully someone can help me out.

The first, which is probably simpler; a query which will give me the count of missing updates and the count of installed updates for every machine that has 1 ore more update missing. I am not interested in the number of updates installed on a machine that doesn't have any updates missing. Would also be good to know when the machine last reported in.

So something like this:

The second, I assume more complicated one; a query that will give me the count of missing updates but broken down into their classification (ie. critical, service packs, updates...) and a count of the installed updates.

So something like this:


Is this possible?






  • Edited by amaru96 Thursday, February 19, 2015 9:28 AM
February 19th, 2015 12:04pm

I think Garth has a report exactly like this. He gives away a different free report each month however I'm not sure how to get ones he's given away in the past. You may be able to find it here: http://www.enhansoft.com/resources
Free Windows Admin Tool Kit Click here and download it now
February 19th, 2015 4:37pm

OK, so discovered the below:

26 = critical
27 = Definition Updates
28 = Drivers
29 = Feature Packs
30 = Security Updates
31 = Service Packs
32 = Tools
33 = Update Rollups
34 = Updates

Also, the below query returns a list of total updates required for each machine.

select

      CS.Name0 [Server Name],

case

when (sum(case when UCS.status=2 then 1 else 0 end))>0 then ('Needs '+(cast(sum(case when UCS.status=2 then 1 else 0 end)as varchar(10))+ ' Patches'))

else 'Good Client'

end as 'Status',

      ws.lasthwscan as 'Last HW scan',

      FCM.collectionID--,

from

      v_UpdateComplianceStatus UCS

left outer join dbo.v_GS_COMPUTER_SYSTEM  CS on CS.ResourceID = UCS.ResourceID

join v_CICategories_All catall2 on catall2.CI_ID=UCS.CI_ID

join v_CategoryInfo catinfo2 on catall2.CategoryInstance_UniqueID = catinfo2.CategoryInstance_UniqueID and catinfo2.CategoryTypeName='UpdateClassification'

left join v_gs_workstation_status ws on ws.resourceid=CS.resourceid

left join v_fullcollectionmembership FCM on FCM.resourceid=CS.resourceid

WHERE

     UCS.Status = '2'

and FCM.collectionid = 'SMS00001'

Group by

      CS.Name0,

      ws.lasthwscan,

      FCM.collectionID

Order by

      CS.Name0,

      ws.lasthwscan,

      FCM.collectionID

If I add the following, I get the total 'critical' updates required by each machine:

WHERE catinfo2.CategoryInstanceID = 26 AND

     UCS.Status = '2'

and FCM.collectionid = 'SMS00001'

Changing the value '26' to one of the others listed above returns that classification.

Anyone know how I can incorporate "WHERE catinfo2.CategoryInstanceID = xx"

to list each update classification?





February 19th, 2015 9:46pm

OK, so discovered the below:

26 = critical
27 = Definition Updates
28 = Drivers
29 = Feature Packs
30 = Security Updates
31 = Service Packs
32 = Tools
33 = Update Rollups
34 = Updates

Also, the below query returns a list of total updates required for each machine.

select

      CS.Name0 [Server Name],

case

when (sum(case when UCS.status=2 then 1 else 0 end))>0 then ('Needs '+(cast(sum(case when UCS.status=2 then 1 else 0 end)as varchar(10))+ ' Patches'))

else 'Good Client'

end as 'Status',

      ws.lasthwscan as 'Last HW scan',

      FCM.collectionID--,

from

      v_UpdateComplianceStatus UCS

left outer join dbo.v_GS_COMPUTER_SYSTEM  CS on CS.ResourceID = UCS.ResourceID

join v_CICategories_All catall2 on catall2.CI_ID=UCS.CI_ID

join v_CategoryInfo catinfo2 on catall2.CategoryInstance_UniqueID = catinfo2.CategoryInstance_UniqueID and catinfo2.CategoryTypeName='UpdateClassification'

left join v_gs_workstation_status ws on ws.resourceid=CS.resourceid

left join v_fullcollectionmembership FCM on FCM.resourceid=CS.resourceid

WHERE

     UCS.Status = '2'

and FCM.collectionid = 'SMS00001'

Group by

      CS.Name0,

      ws.lasthwscan,

      FCM.collectionID

Order by

      CS.Name0,

      ws.lasthwscan,

      FCM.collectionID

If I add the following, I get the total 'critical' updates required by each machine:

WHERE catinfo2.CategoryInstanceID = 26 AND

     UCS.Status = '2'

and FCM.collectionid = 'SMS00001'

Changing the value '26' to one of the others listed above returns that classification.

Anyone know how I can incorporate "WHERE catinfo2.CategoryInstanceID = xx"

to list each update classification?





Free Windows Admin Tool Kit Click here and download it now
February 19th, 2015 9:46pm

I've been digging through the tables & views and discovered the v_categories view. I believe this contains the classifications. There are 9 rows related to it and they have values of 26-34. From what I've seen 26 = Critical. What do the others represent?
February 20th, 2015 12:40am

OK, so discovered the below:

26 = critical
27 = Definition Updates
28 = Drivers
29 = Feature Packs
30 = Security Updates
31 = Service Packs
32 = Tools
33 = Update Rollups
34 = Updates

Also, the below query returns a list of total updates required for each machine.

select

      CS.Name0 [Server Name],

case

when (sum(case when UCS.status=2 then 1 else 0 end))>0 then ('Needs '+(cast(sum(case when UCS.status=2 then 1 else 0 end)as varchar(10))+ ' Patches'))

else 'Good Client'

end as 'Status',

      ws.lasthwscan as 'Last HW scan',

      FCM.collectionID--,

from

      v_UpdateComplianceStatus UCS

left outer join dbo.v_GS_COMPUTER_SYSTEM  CS on CS.ResourceID = UCS.ResourceID

join v_CICategories_All catall2 on catall2.CI_ID=UCS.CI_ID

join v_CategoryInfo catinfo2 on catall2.CategoryInstance_UniqueID = catinfo2.CategoryInstance_UniqueID and catinfo2.CategoryTypeName='UpdateClassification'

left join v_gs_workstation_status ws on ws.resourceid=CS.resourceid

left join v_fullcollectionmembership FCM on FCM.resourceid=CS.resourceid

WHERE

     UCS.Status = '2'

and FCM.collectionid = 'SMS00001'

Group by

      CS.Name0,

      ws.lasthwscan,

      FCM.collectionID

Order by

      CS.Name0,

      ws.lasthwscan,

      FCM.collectionID

If I add the following, I get the total 'critical' updates required by each machine:

WHERE catinfo2.CategoryInstanceID = 26 AND

     UCS.Status = '2'

and FCM.collectionid = 'SMS00001'

Changing the value '26' to one of the others listed above returns that classification.

Anyone know how I can incorporate "WHERE catinfo2.CategoryInstanceID = xx"

to list each update classification?





  • Edited by amaru96 Friday, February 20, 2015 12:02 AM
Free Windows Admin Tool Kit Click here and download it now
February 20th, 2015 12:46am

Hi,

Did you mange to incorporate "WHERE catinfo2.CategoryInstanceID = xx"
to list each update classification? or maybe a another solution?

I have a similary challange with a SCCM 2012 report. Would like an overview before implementing a new patch mgmt solution :-)

Br,

Thomas

August 25th, 2015 5:07am

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics