Privacidad & Cookies
Este sitio utiliza cookies. Al continuar, usted acepta su uso. Obtenga más información, incluido cómo controlar las cookies.
Successfully Tested On: Microsoft System Center Configuration Manager versions 1809 - 2002
Uno de los desafíos que pueden enfrentar los técnicos de TI es intentar consultar las versiones de las aplicaciones dentro de SCCM. Crear una consulta para una versión específica funciona muy bien usando el operador igual ( = ), pero buscar una versión mayor que (>) o menor que (<) se vuelve difícil.
Esto se debe a que los números de versión se almacenan como cadenas en la base de datos SCCM. Recuerde que WQL (subconjunto de SQL) se utiliza para consultar datos de SCCM, por lo que estamos restringidos por las limitaciones de WQL al comparar valores de cadena. Puede encontrar más información de Microsoft sobre WQL aquí: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_wql
Usemos Google Chrome como ejemplo. Supongamos que queremos consultar todas las versiones estables de Google Chrome que sean inferiores a la versión 79.0.3945.117. Mi solución es un poco tediosa, pero funciona de manera confiable.
A pesar de su apariencia, la siguiente instrucción de consulta parcial WQL no funcionará:
WHERE SMS_G_System_ADD_REMOVE_PROGRAMS_64.DisplayName LIKE "Google Chrome%" AND SMS_G_System_ADD_REMOVE_PROGRAMS_64.Version < "79.0.3945.117"
El operador menos que (<) evaluará la versión de Chrome 79.0.3945.88 como mayor que 79.0.3945.117, lo que obviamente es incorrecto. Entonces, ¿qué hacemos?
El operador SIMILAR
El operador SIMILAR es lo que aprovecharemos para obtener los resultados que necesitamos. LIKE permite el uso de corchetes () para especificar un rango o conjunto de caracteres, así como un signo de porcentaje (%) como comodín para especificar una cadena de cero o más caracteres.
Primero, necesitaremos consultar todas las versiones 1 a 9 (versiones de un solo dígito). Esto se logra con la instrucción de consulta SQL parcial:
WHERE SMS_G_System_ADD_REMOVE_PROGRAMS_64.Version LIKE ".%"
El comodín de signo de porcentaje ( % ) se usa después del período para obtener todas las versiones secundarias.
A continuación necesitamos capturar las versiones 10-78. Esta declaración obtiene casi todo eso:
WHERE SMS_G_System_ADD_REMOVE_PROGRAMS_64.Version LIKE ".%"
Pero también necesitaremos esto para compensar las versiones 19, 29, 39, 49, 59, y 69:
WHERE SMS_G_System_ADD_REMOVE_PROGRAMS_64.Version LIKE "9.%"
Como antes, el comodín ( % ) se usa para asegurar que obtenemos todas las versiones secundarias. Tenga en cuenta que también tenemos que usar dos conjuntos de corchetes, ya que cada conjunto solo aborda un solo carácter.
A continuación, algunos conocimientos de versión ayudan a reducir parte del trabajo. El historial de versiones estables de Google para Chrome muestra que solo se han lanzado dos versiones secundarias estables de 79 antes de nuestro objetivo 79.0.3945.117. Estas dos versiones son 79.0.3945.79 y 79.0.3945.88.
Usaremos operadores iguales ( = ) para abordar explícitamente cada uno de estos:
WHERE SMS_G_System_ADD_REMOVE_PROGRAMS_64.Version = "79.0.3945.79"
WHERE SMS_G_System_ADD_REMOVE_PROGRAMS_64.Version = "79.0.3945.88"
Finalmente, la consulta se completa con un poco de formato:
SELECT * FROM SMS_R_System INNER 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_64.DisplayName LIKE "Google Chrome%" AND (SMS_G_System_ADD_REMOVE_PROGRAMS_64.Version LIKE ".%" OR SMS_G_System_ADD_REMOVE_PROGRAMS_64.Version LIKE ".%" OR SMS_G_System_ADD_REMOVE_PROGRAMS_64.Version LIKE "9.%" OR SMS_G_System_ADD_REMOVE_PROGRAMS_64.Version = "79.0.3945.79" OR SMS_G_System_ADD_REMOVE_PROGRAMS_64.Version = "79.0.3945.88")
Se encontrarán todas las versiones estables de Chrome inferiores a 79.0.3945.117. Sin embargo, esto solo encuentra versiones de 64 bits de Chrome, por lo que es posible que deseemos duplicar estas mismas instrucciones para 32 bits utilizando la tabla SMS_G_System_ADD_REMOVE_PROGRAMS.
Esta misma técnica también se puede usar para consultar versiones mayores que una versión específica y me ha ayudado a consultar versiones de aplicaciones de manera más confiable.