SCCM Query - PCs with More than One Software


Really short post for today! I recently had to identify the easiest way to accurately query machines that had more than one piece of software installed, and make a collection from them.

I did a bit of searching online, and a lot of the responses I found didn’t actually work because of the way the query was structured.

I went into the Config Manager database using SSMS and played with some of the Queries there, and finally wound up with the one below that seemed to return in the most efficient time:

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       
where
    SMS_R_System.Name in (
        select
            SMS_R_System.Name               
        from
            SMS_R_System               
        inner join
            SMS_G_System_INSTALLED_SOFTWARE                       
                on SMS_G_System_INSTALLED_SOFTWARE.ResourceID = SMS_R_System.ResourceId               
        where
            SMS_G_System_INSTALLED_SOFTWARE.ARPDisplayName like "%Application1%"          
    )           
    and SMS_R_System.Name in (
        select
            SMS_R_System.Name               
        from
            SMS_R_System               
        inner join
            SMS_G_System_INSTALLED_SOFTWARE                       
                on SMS_G_System_INSTALLED_SOFTWARE.ResourceID = SMS_R_System.ResourceId               
        where
            SMS_G_System_INSTALLED_SOFTWARE.ARPDisplayName like "%Application2%"          
    )

Other queries seemed to be trying to hit the Add or Remove Programs and Add or Remove Programs 64 tables which mean double the searches for both applications.