Proget Query Language (PQL) to prosty język zapytań, który umożliwia filtrowanie urządzeń w systemie. Dzięki PQL możesz dynamicznie przypisywać urządzenia do grup na podstawie zdefiniowanych kryteriów, tworząc tzw. grupy dynamiczne. Wcześniej grupy były statyczne – administratorzy ręcznie przypisywali urządzenia do grup. Teraz, dzięki PQL, grupy mogą automatycznie obejmować urządzenia spełniające określone warunki, takie jak dane urządzeń lub etykiety użytkowników. Możliwe jest również łączenie różnych kryteriów w ramach jednego zapytania.
Dynamiczne grupowanie pozwala na wstępne przygotowanie konfiguracji, która zostanie automatycznie przypisana do urządzeń, nawet jeśli jeszcze nie są one obecne w systemie. Konfiguracja może być modyfikowana na podstawie atrybutów użytkowników pobranych z zewnętrznych katalogów, takich jak Active Directory. Wprowadzone zmiany w katalogu mogą automatycznie wpływać na konfigurację urządzeń w systemie Proget.
Dzięki PQL możliwe jest łatwe tworzenie grup urządzeń, bez konieczności ręcznego przypisywania. Jeżeli nie korzystasz z zaawansowanych funkcji PQL, domyślny mechanizm tworzenia grup automatycznie utworzy etykietę dla danej grupy. Aby uzyskać zgodność z poprzednimi wersjami systemu, wystarczy przypisać użytkownikowi etykietę o tej samej nazwie, co grupa.
- Pusta grupa, do której nie zostaną przypisane żadne urządzenia
- Automatycznie obejmuje wszystkie urządzenia w systemie
- Umożliwiają tworzenie filtrów PQL na podstawie określonych kryteriów
Ustawienia niestandardowe
W sekcji ‘Ustawienia niestandardowe’ administrator może tworzyć filtry PQL, korzystając z dostępnych parametrów. System podpowiada dostępne opcje podczas pisania, co czyni tworzenie zapytań intuicyjnym. Gdy składnia jest poprawna, administrator może zobaczyć listę urządzeń spełniających warunki filtru, co ułatwia bieżącą weryfikację wyników.
Aby lepiej zrozumieć składnię filtrów, przedstawiamy kilka podstawowych pojęć:
Kluczowe elementy filtru PQL
- Pojedyncze wyrażenie składające się z parametru, operatora i wartości
- Każdy filtr musi zawierać co najmniej jedną frazę
- Frazy można łączyć za pomocą operatorów logicznych (AND, OR)
- Określa atrybut urządzenia lub jego właściciela, który jest filtrowany
- Łączy parametr z wartością i określa relację między nimi
- Prawa strona wyrażenia, określająca, czego szukamy (np. tekst, liczba, wartość logiczna)
- Łączy frazy w bardziej złożone zapytania
- Dostępne łączniki: AND, OR
Przykłady filtrów
- Ten filtr przypisuje do grupy wszystkie urządzenia z systemem operacyjnym Android
- Ten filtr obejmuje wszystkie urządzenia, których właściciel nie ma etykiety “Pracownik”
- Ten filtr łączy kilka kryteriów:
- Urządzenie należy do użytkownika, którego jednostka organizacyjna (wartość synchronizowana z usługą katologową) zawiera w nazwie słowo ‘Office’
- Użytkownik urządzenia nie jest zablokowany w systemie Proget
- Urządzenie działa na systemie Android
Klucze
Klucz | Dostępne operatory | Typ wartości | Opis |
---|---|---|---|
device.manufacturer | =, != | wyliczeniowy | Producent urządzenia, np. Samsung |
device.model | =, != | wyliczeniowy | Model urządzenia, np. iPhone 13 |
device.serialNumber | =, != | tekst | Numer seryjny urządzenia |
device.progetId | =, != | tekst | Proget ID urządzenia, np. 123456 |
device.os.type | =, != | wyliczeniowy | System operacyjny urządzenia np. Android |
device.os.versionCode | =, != | liczba | Wersja systemu operacyjnego urządzenia np. 33 (Android 13) |
device.activationType | =, != | wyliczeniowy | Rodzaj aktywacji np. android_mdm |
device.systemUpdateStatus | =, != | wyliczeniowy | Wartość ze zdefiniowanego zbioru np. available |
device.SIM1.IMEI | =, != | tekst | IMEI dla SIM1 |
device.SIM2.IMEI | =, != | tekst | IMEI dla SIM2 |
device.SIM1.ICCID | =, != | tekst | ICCID dla SIM 1 |
device.SIM2.ICCID | =, != | tekst | ICCID dla SIM2 |
device.SIM1.carrier | =, != | tekst | Operator SIM1 |
device.SIM2.carrier | =, != | tekst | Operator SIM2 |
device.mdmVersionCode | =, !=, >, >=, <, <= | liczba | Wersja kodowa aplikacji Proget |
device.alias | =, !=, contains, not_contains, starts_with, not_starts_with | tekst | Alias urządzenia |
device.user.uuid | =, != | tekst | UUID użytkownika |
device.user.isBlocked | =, != | logiczna | Urządzenie należące do zablokowanego użytkownika |
device.user.email | =, !=, contains, not_contains, starts_with, not_starts_with, ends_with, not_ends_with | tekst | Email użytkownika np. jdoe@example.com |
device.user.type | =, != | wyliczeniowy | Typ użytkownika np. lokalny |
device.user.displayName | =, !=, contains, not_contains, starts_with, not_starts_with, ends_with, not_ends_with | tekst | Imię i nazwisko użytkownika np. John Doe |
device.user.username | =, !=, contains, not_contains, starts_with, not_starts_with, ends_with, not_ends_with | tekst | Nazwa użytkownika np. jdoe |
device.user.principalName | =, !=, contains, not_contains, starts_with, not_starts_with, ends_with, not_ends_with | tekst | Email użytkownika np. jdoe@example.com |
device.user.distinguishedName | =, !=, contains, not_contains, starts_with, not_starts_with, ends_with, not_ends_with | tekst | Nazwa wyróżniająca użytkownika (DN) |
device.user.commonName | =, !=, contains, not_contains, starts_with, not_starts_with, ends_with, not_ends_with | tekst | Nazwa zwyczajowa użytkownika |
device.user.organization | =, !=, contains, not_contains, starts_with, not_starts_with, ends_with, not_ends_with | tekst | Organizacja użytkownika |
device.user.organizationUnit | =, !=, contains, not_contains, starts_with, not_starts_with, ends_with, not_ends_with | tekst | Oddział organizacji użytkownika |
device.user.locacity | =, != | tekst | Lokalizacja |
device.user.tittle | =, !=, contains, not_contains, starts_with, not_starts_with, ends_with, not_ends_with | tekst | Tytuł użytkownika |
device.user.label | =, != | tekst | Etykieta użytkownika |