Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Пользователь


Сообщения: 87
Благодарности: 4

Профиль | Сайт | Отправить PM | Цитировать


Отлично! Всё заработало в локальной машине! Теперь буду тестировать работу в связке с GPO.
KB'шка запросила ещё ряд привилегий. Я прописал их по аналогии. Сейчас скрипт выглядит
так:
Код: Выделить весь код
Option Explicit

Dim objDictionary

Dim strComputer

Dim objSWbemLocator
Dim objSWbemServicesEx
Dim collSWbemObjectSet
Dim objSWbemObjectEx


Set objDictionary = WScript.CreateObject("Scripting.Dictionary")

With objDictionary
	.Add "5.1.2600", "WindowsXP-KB943729-x86-ENU.exe"
	.Add "5.2.3790", "WindowsServer2003-KB943729-x86-RUS.exe"
	.Add "6.0.6000", "Windows6.0-KB943729-x86.msu"
	.Add "6.0.6001", "Windows6.0-KB943729-x86.msu"
	.Add "6.0.6002", "Windows6.0-KB943729-x86.msu"
End With


strComputer = "."

Set objSWbemLocator    = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")
objSWbemServicesEx.Security_.Privileges.AddAsString "SeBackupPrivilege", True
objSWbemServicesEx.Security_.Privileges.AddAsString "SeRestorePrivilege", True
objSWbemServicesEx.Security_.Privileges.AddAsString "SeShutdownPrivilege", True
objSWbemServicesEx.Security_.Privileges.AddAsString "SeSecurityPrivilege", True
objSWbemServicesEx.Security_.Privileges.AddAsString "SeTakeOwnershipPrivilege", True
Set collSWbemObjectSet = objSWbemServicesEx.ExecQuery( _
	"SELECT * FROM Win32_QuickFixEngineering WHERE HotFixID='File 1' AND ServicePackInEffect = 'KB943729'")

If collSWbemObjectSet.Count = 0 Then
	For Each objSWbemObjectEx In objSWbemServicesEx.InstancesOf("Win32_OperatingSystem")
		With objSWbemServicesEx.Get("Win32_Process")
			If .Create("""C:\KB\" & objDictionary.Item(objSWbemObjectEx.Version) & _
				""" /quiet /norestart /log:""C:\Logs\" & WScript.CreateObject("WScript.Network").ComputerName & ".log""") = 0 Then
				
			Else
				'Error
			End If
		End With
		
		Exit For
	Next
End If

Set collSWbemObjectSet = Nothing
Set objSWbemServicesEx = Nothing
Set objSWbemLocator    = Nothing

objDictionary.RemoveAll
Set objDictionary      = Nothing

WScript.Quit 0


Ещё от себя Я изменил ключ /passive на /quiet - мне так больше подходит.

Спасибо Вам большущее за Вашу компетентность и оперативность! Если у Вас есть желание и время развить этот код для работы с учётом платформы и языка - с удовольствием буду Вашим тестером. Уверен, что этот код будет полезен многим нашим коллегам.

Решённой тему пока не отмечаю до окончательного тестирования.

-------
С Уважением,
Пётр Ластенко.


Последний раз редактировалось PIL123, 01-07-2012 в 16:16.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:08, 01-07-2012 | #11