Замена contains на like проблему не решила — оба регистрозависимы. В текущем виде фильтр не сработает ни на одной записи с кириллицей, а ASCII-записи ("7-zip", "adobe reader") это маскируют.
Проверено на nxscript 6.2.0:
s = "Средства Проверки Microsoft Edge";
s like "*Средства Проверки*" // true - регистр совпадает
s like "*средства проверки*" // false - регистр не совпадает
s.contains("Средства Проверки") // true
s ilike "*средства проверки*" // true - ilike регистронезависим
Регистронезависимый оператор — ilike, а не like. Среди методов строки аналога contains без учёта регистра нет, equalsIgnoreCase сравнивает строку целиком.
Почему исходный вариант с contains выглядел нерабочим: по приложенному логу toLowerCase на вашем сервере отработал корректно — "агент администрирования kaspersky security center". Значит и contains работал, а пакеты из трейса (Kaspersky Security Center, Microsoft Edge) просто не входили в список из 60 записей, и правило отфильтровало их правильно. Исходный скрипт был в порядке.
Деталь, которая здесь важнее: toLowerCase, toUpperCase, ilike и equalsIgnoreCase для не-ASCII зависят от локали процесса. LC_CTYPE подхватывается только если он есть в окружении, а systemd-юнит его не задаёт — при запуске из пакета netxmsd может работать в локали C. Тогда toLowerCase молча оставляет кириллицу без изменений, а ilike и equalsIgnoreCase на кириллице возвращают false, без записи в лог. Тикет на это: https://github.com/netxms/netxms/issues/3483
Проверка:
println("Средства".toLowerCase()); // ожидается "средства"
Если вывод пустой или регистр не изменился, локали нет — задаётся через LANG=C.UTF-8 в /etc/default/netxmsd.
Для списка из 60 наименований надёжнее не приводить регистр вручную: либо сравнивать через ilike при рабочей локали, либо сопоставлять точным регистром через contains — второй вариант от локали не зависит вообще. Вариант с Mapping tables, предложенный выше, здесь удобнее обоих: список правится в Configuration без редактирования скрипта, GetMappingTableKeys() отдаёт его массивом.