La ventaja de usar la colección, es que una de las razones para solicitar el listado de equipos que NO tengan X software instalado, es, justamente, para instalarselo. Y el deploy debemos hacerlo sobre una colección.
La complejidad de la query en este caso reside en dos puntos. El primero es que se trata de una consulta anidada. Para quienes no están muy acostumbrados a los lenguajes de consulta (en este caso WQL), esto puede complicar un poco las cosas. El segundo inconveniente es que tenemos dos "Add/Remove Programs". El de los equipos con sistema operativo de 32 bits y el de los X64. Así que tendremos que buscar en ambas tablas y encontrar a quienes no aparezcan en ninguna de ellas.
Sin más rodeos, he aquí la query para obtener todas las computadoras que no cuenten con determinado software:
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_COMPUTER_SYSTEM on SMS_G_System_COMPUTER_SYSTEM.ResourceID = SMS_R_System.ResourceId where SMS_G_System_COMPUTER_SYSTEM.Name not in (select distinct SMS_G_System_COMPUTER_SYSTEM.Name from SMS_R_System inner join SMS_G_System_COMPUTER_SYSTEM on SMS_G_System_COMPUTER_SYSTEM.ResourceID = SMS_R_System.ResourceId inner join SMS_G_System_ADD_REMOVE_PROGRAMS on SMS_G_System_ADD_REMOVE_PROGRAMS.ResourceID = SMS_R_System.ResourceId left join SMS_G_System_ADD_REMOVE_PROGRAMS_64 on SMS_G_System_ADD_REMOVE_PROGRAMS_64.ResourceID = SMS_R_System.ResourceId where SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName like "%NOMBRE DEL SOFTWARE%" or SMS_G_System_ADD_REMOVE_PROGRAMS_64.DisplayName like "%NOMBRE DEL SOFTWARE%")Como podrán adivinar, deben reemplazar "NOMBRE DEL SOFTWARE" por el nombre del programa a buscar.
Esta query no puede armarse completamente en el diseñador de querys de SCCM, pero si les resulta más sencillo, pueden usarlo de este modo:
Tipo de criterio: Subselected values.
Donde: Computer System - Name
Operador: Is not in
Subselect: Y aquí pegan toda la subconsulta que aparece entre paréntesis en la consulta original:
select distinct SMS_G_System_COMPUTER_SYSTEM.Name from SMS_R_System inner join SMS_G_System_COMPUTER_SYSTEM on SMS_G_System_COMPUTER_SYSTEM.ResourceID = SMS_R_System.ResourceId inner join SMS_G_System_ADD_REMOVE_PROGRAMS on SMS_G_System_ADD_REMOVE_PROGRAMS.ResourceID = SMS_R_System.ResourceId left join SMS_G_System_ADD_REMOVE_PROGRAMS_64 on SMS_G_System_ADD_REMOVE_PROGRAMS_64.ResourceID = SMS_R_System.ResourceId where SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName like "%NOMBRE DEL SOFTWARE%" or SMS_G_System_ADD_REMOVE_PROGRAMS_64.DisplayName like "%NOMBRE DEL SOFTWARE%"El asistente nos dice que hay un error en la subconsulta, pero en realidad es una falla en el análisis, podemos obviar esta advertencia.
No olvidemos, que para que la coleccione funcione correctamente debemos actualizarla periódicamente y permitir el agregado dinámico de recursos:
Saludos
Franco
Dónde puedo comprar computadoras de escritorio sin software?
ResponderEliminar