Войти

Показать полную графическую версию : [решено] Автоматичкая установка ПО только по необходимости


ArtyomGl
20-09-2012, 13:20
Столкнулся с такой проблемой:
необходимо распространять определённое ПО автоматически через gpo.
проблема в том, что на некоторых станциях уже стоит та или иная версия программы.
подскажите как сделать, что бы ПО ставилось только при отсутствии на клиенте любой версии программы.

ArtyomGl
21-09-2012, 15:04
применил скрипт для wmi фильтра.
почему то фильтр игнорируется и программа всё равно ставится.

SELECT * FROM Win32_Product WHERE not (caption like '%Adobe Acrobat%' OR Caption Like '%Adobe Reader%')

Iska
21-09-2012, 16:26
ArtyomGl, если бы у Вас на целевых машинах были установлены только «Сaption like '%Adobe Acrobat%'|'%Adobe Reader%'»… Но ведь к Вас наверняка на них установлены и иные пакеты, не только Adobe Acrobat и Adobe Reader. Посему данный фильтр всегда будет возвращать истину, если будет хотя бы один иной пакет, кроме указанных в условии.

Попробуйте посмотреть на этот пример: What you can do, should do and should NOT do with GPOs: Inverting WMI filters (http://evilgpo.blogspot.com/2012/05/inverting-wmi-filters.html).

ArtyomGl
24-09-2012, 12:34
WMI для этого не подходит буду ставить с помощью скрипта.

ArtyomGl
28-09-2012, 09:31
On Error Resume Next
strComputer = "."
Count = 0
WScript.Sleep 30000
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( _
"SELECT * FROM Win32_Product WHERE Caption Like 'Adobe Acrobat%' OR Caption Like 'Adobe Reader%'",,48)
For Each objItem in colItems
Count = Count + 1
Next
If Count = 0 Then
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run ("""\\путь до установочника"" /quiet /norestart")

End If

Вот так решил проблему.

Iska
28-09-2012, 13:56
For Each objItem in colItems
Count = Count + 1
Next
If Count = 0 Then
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run ("""\\путь до установочника"" /quiet /norestart")

End If
If colItems.Count = 0 Then
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run ("""\\путь до установочника"" /quiet /norestart")
End If

ArtyomGl
01-10-2012, 09:32
Спасибо, так тоже работает.




© OSzone.net 2001-2012