soukromí & Cookies
tento web používá cookies. Pokračováním souhlasíte s jejich použitím. Další informace, včetně toho, jak ovládat soubory cookie.
Successfully Tested On: Microsoft System Center Configuration Manager versions 1809 - 2002
jednou z výzev, kterým mohou technici čelit, je pokus o dotaz na verze aplikací v rámci SCCM. Vytvoření dotazu pro konkrétní verzi Funguje skvěle pomocí operátora equal ( = ), ale hledání verze větší než (>) nebo menší než (<) konkrétní verze se stává obtížným.
je to proto, že čísla verzí jsou uložena jako řetězce v databázi SCCM. Připomeňme, že WQL (podmnožina SQL) se používá k dotazování dat z SCCM, takže jsme omezeni omezeními WQL při porovnávání hodnot řetězců. Více informací od Microsoftu o WQL najdete zde: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_wql
jako příklad použijeme Google Chrome. Řekněme, že chceme dotazovat všechny stabilní verze prohlížeče Google Chrome, které jsou menší než verze 79.0.3945.117. Moje řešení je trochu únavné, ale spolehlivě funguje.
i přes svůj vzhled nebude následující dílčí příkaz dotazu WQL fungovat:
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"
méně než operátor (<) vyhodnotí verzi Chrome 79.0.3945.88 jako větší než 79.0.3945.117, což je zjevně nesprávné. Tak co budeme dělat?
operátor LIKE
operátor LIKE je to, co využijeme k získání potřebných výsledků. LIKE umožňuje použití závorek () pro určení rozsahu nebo sady znaků, stejně jako znaménko procenta ( % ) jako zástupný znak pro určení řetězce nula nebo více znaků.
nejprve se budeme muset zeptat na všechny verze 1-9(jednociferné verze). Toho je dosaženo částečným příkazem dotazu SQL:
WHERE SMS_G_System_ADD_REMOVE_PROGRAMS_64.Version LIKE ".%"
zástupný znak procenta ( % ) se používá po uplynutí této doby, aby se získaly všechny dílčí verze.
dále musíme zachytit verze 10-78. Toto prohlášení dostane téměř všechno:
WHERE SMS_G_System_ADD_REMOVE_PROGRAMS_64.Version LIKE ".%"
ale budeme to také potřebovat, abychom kompenzovali verze 19, 29, 39, 49, 59, a 69:
WHERE SMS_G_System_ADD_REMOVE_PROGRAMS_64.Version LIKE "9.%"
stejně jako dříve se zástupný znak ( % ) používá k zajištění všech dílčích verzí. Všimněte si, že musíme také použít dvě sady závorek, protože každá sada adresuje pouze jeden znak.
dále některé verze insight pomáhá snížit nějakou práci. Stabilní historie vydání Google pro Chrome ukazuje, že před naším cílem byly vydány pouze dvě stabilní verze 79 79.0.3945.117. Tyto dvě verze jsou 79.0.3945.79 a 79.0.3945.88.
použijeme stejné operátory ( = ), abychom explicitně oslovili každou z nich:
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"
nakonec je dotaz dokončen s malým formátováním:
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")
budou nalezeny všechny stabilní verze Chrome menší než 79.0.3945.117. To však najde pouze 64bitové verze prohlížeče Chrome, takže můžeme chtít duplikovat stejné příkazy pro 32bitové pomocí tabulky SMS_G_System_ADD_REMOVE_PROGRAMS.
tato stejná technika může být také použita k dotazu na verze větší než konkrétní verze a pomohla mi spolehlivěji dotazovat verze aplikací.