Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Фильтр отсутствия установленной программы (http://forum.oszone.net/showthread.php?t=208539)

iMirRor 08-06-2011 17:15 1690835

Фильтр отсутствия установленной программы
 
Необходимо было создать 2 WMI-фильтра для управлениями групповыми политиками средствами WQL
1) Выбрать компьютеры с установленным Office любой версии. Тут все получилось
Код:

SELECT * FROM Win32_Product WHERE Name LIKE "Microsoft Office%"
2) Выбрать те компьютеры, где MS Office не установлен, т.е. обратный первому. Просто вставить NOT перед LIKE не получилось. Можете помочь с написанием данного скрипта.

p.s. Еще столкнулся с проблемой определения компьютеров с 32-битной ОС. В 7-ке есть параметр "OSArchitecture", но в XP его нет и крипт вызывает ошибку.

Kazun 08-06-2011 17:40 1690871

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'

iMirRor 08-06-2011 17:59 1690899

1) Запрос выполняется, но при этом выводится все ПО, которое не относится к MS Office, а необходимо, чтобы он возращал NULL при этом.
2) Необходимо учитывать Windows 2000, Windows Vista и Windows 7, которые могут быть 32-разрядными. Пока напрашивается перечисление через OR всех Caption, но это не красивое решение.

Kazun 08-06-2011 18:02 1690903

Для 2000 можно сделать,тот же фильтр что и для XP. А начиная с Vista можно использовать OSArchitecture.

iMirRor 08-06-2011 18:08 1690910

Как в одном фильтре учесть все системы, ведь в групповой политике можно указать лишь один фильтр?

cameron 08-06-2011 22:12 1691080

я бы попробовала так:
SELECT * FROM Win32_Product WHERE Name LIKE "Microsoft Office%" IS NULL
или так:
SELECT NULL FROM Win32_product WHERE Name LIKE "Microsoft Office%"
Цитата:

Цитата iMirRor
Необходимо учитывать Windows 2000 »

win2k не работает с WMI Filters.
Цитата:

Цитата iMirRor
p.s. Еще столкнулся с проблемой определения компьютеров с 32-битной ОС. В 7-ке есть параметр "OSArchitecture", но в XP его нет и крипт вызывает ошибку. »

SELECT * FROM Win32_ComputerSystem WHERE SystemType="x64-based PC"
SELECT * FROM Win32_ComputerSystem WHERE SystemType="x86-based PC"
на ХР отрабатывает.

iMirRor 09-06-2011 08:36 1691222

В wbemtest первые запросы дают ошибку, а за определение битности - спасибо, работает.

cameron 09-06-2011 15:51 1691484

SELECT * FROM Win32_Product WHERE Caption <>"Microsoft Office%"
а так?

iMirRor 09-06-2011 18:30 1691586

Скрипт работает, но он выводит все установленные программы, которые не совпадают с "Microsoft Office%". А необходимо при наличии хотя бы одной записи об офисе возращать NULL (или FALSE) и, соответсвенно, не NULL при отсутствии записей о установленном MS Office. Просто нужно, чтобы групповая политика выполнилась для той группы компьютеров, где не установлен MS Office. Жаль, что нельзя Not применить к самому фильтру и не работает функция, возвращающая количество записей.

cameron 09-06-2011 22:18 1691723

ошибка

iMirRor 11-06-2011 15:33 1692670

Поскольку уперся в тупик, решил пойти другим путем. Можно ли через WQL узнать, входит ли компьютер в определенную группу в домене?

amel27 11-06-2011 15:35 1692671

iMirRor, политика применяется если найден хотя бы один экземпляр объекта, значит фильтр должен что-то находить и при отсутствии ПО. Лобовое решение - создание своих (пользовательских) классов/объектов на ВСЕХ компьютерах домена (например, свой экземпляр для каждой конкретной программы). WQL-запрос атрибута таких объектов позволит определить состояние установки конкретного ПО. Объекты могут создаваться скриптом вручную, через политики или распространяться через инфраструктуру инвентаризации оборудования SMS/SCOM.

пример реализации таких объектов с присвоением атрибутам значений параметров реестра:
Using WMI filters with Registry values

Если единиц такого ПО немного, думаю практичней будет использовать обычные переменные окружения, заполнив их требуемым значением через скрипт автозагрузки компьютера, что-нибудь типа:
Код:

IsMsOfficeInstalled=True/False
MSOfficeVersion=0/10/11/..

В WMI-фильтре указывать WQL-запрос класса Win32_Environment

amel27 11-06-2011 16:07 1692688

Цитата:

Цитата iMirRor
входит ли компьютер в определенную группу в домене?»

это вроде уже другая песня - Security Filtering (фильтры безопасности)


Время: 10:10.

Время: 10:10.
© OSzone.net 2001-