Фильтр отсутствия установленной программы
Необходимо было создать 2 WMI-фильтра для управлениями групповыми политиками средствами WQL
1) Выбрать компьютеры с установленным Office любой версии. Тут все получилось Код:
SELECT * FROM Win32_Product WHERE Name LIKE "Microsoft Office%" p.s. Еще столкнулся с проблемой определения компьютеров с 32-битной ОС. В 7-ке есть параметр "OSArchitecture", но в XP его нет и крипт вызывает ошибку. |
1) SELECT * FROM Win32_Product WHERE NOT Name LIKE "Microsoft Office%"
2) Для Xp - x86 - SELECT * FROM Win32_OperatingSystem WHERE Caption='Microsoft Windows XP professional' x64 - SELECT * FROM Win32_OperatingSystem WHERE Caption='Microsoft(R) Windows(R) XP professional x64 edition' |
1) Запрос выполняется, но при этом выводится все ПО, которое не относится к MS Office, а необходимо, чтобы он возращал NULL при этом.
2) Необходимо учитывать Windows 2000, Windows Vista и Windows 7, которые могут быть 32-разрядными. Пока напрашивается перечисление через OR всех Caption, но это не красивое решение. |
Для 2000 можно сделать,тот же фильтр что и для XP. А начиная с Vista можно использовать OSArchitecture.
|
Как в одном фильтре учесть все системы, ведь в групповой политике можно указать лишь один фильтр?
|
я бы попробовала так:
SELECT * FROM Win32_Product WHERE Name LIKE "Microsoft Office%" IS NULL или так: SELECT NULL FROM Win32_product WHERE Name LIKE "Microsoft Office%" Цитата:
Цитата:
SELECT * FROM Win32_ComputerSystem WHERE SystemType="x86-based PC" на ХР отрабатывает. |
В wbemtest первые запросы дают ошибку, а за определение битности - спасибо, работает.
|
SELECT * FROM Win32_Product WHERE Caption <>"Microsoft Office%"
а так? |
Скрипт работает, но он выводит все установленные программы, которые не совпадают с "Microsoft Office%". А необходимо при наличии хотя бы одной записи об офисе возращать NULL (или FALSE) и, соответсвенно, не NULL при отсутствии записей о установленном MS Office. Просто нужно, чтобы групповая политика выполнилась для той группы компьютеров, где не установлен MS Office. Жаль, что нельзя Not применить к самому фильтру и не работает функция, возвращающая количество записей.
|
ошибка
|
Поскольку уперся в тупик, решил пойти другим путем. Можно ли через WQL узнать, входит ли компьютер в определенную группу в домене?
|
iMirRor, политика применяется если найден хотя бы один экземпляр объекта, значит фильтр должен что-то находить и при отсутствии ПО. Лобовое решение - создание своих (пользовательских) классов/объектов на ВСЕХ компьютерах домена (например, свой экземпляр для каждой конкретной программы). WQL-запрос атрибута таких объектов позволит определить состояние установки конкретного ПО. Объекты могут создаваться скриптом вручную, через политики или распространяться через инфраструктуру инвентаризации оборудования SMS/SCOM.
пример реализации таких объектов с присвоением атрибутам значений параметров реестра: Using WMI filters with Registry values Если единиц такого ПО немного, думаю практичней будет использовать обычные переменные окружения, заполнив их требуемым значением через скрипт автозагрузки компьютера, что-нибудь типа: Код:
IsMsOfficeInstalled=True/False |
Цитата:
|
Время: 10:10. |
Время: 10:10.
© OSzone.net 2001-