Данный скрипт, написанный на
Visual Basic Script, позволяет извлекать необходимые номера KB из контента WSUS-сервера. Запускать его следует только на самом сервере WSUS. Для работы понадобятся привилегии локального администратора и администратора сервиса WSUS.
Текст скрипта приведен ниже:
'Export KB Files from WSUS
dim obj, obj_from, obj_to, oExec, WshShell, oFSO, objTextFile, obj_srv, obj_db
title = "Export KB Files from WSUS"
Set WshShell = CreateObject("WScript.Shell")
Set obj = CreateObject("Shell.Application")
Set oFSO = CreateObject("Scripting.FileSystemObject")
obj_from = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Update Services\Server\Setup\ContentDir")
obj_from = obj_from&"\WsusContent"
obj_srv = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Update Services\Server\Setup\SqlServerName")
obj_db = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Update Services\Server\Setup\SqlDatabaseName")
set obj_to = obj.browseforfolder(0,"Укажите путь к папке, в которую будут помещены "&Chr(13)&"извлекаемые обновления.",&H0001,&H0000)
if obj_to is Nothing then
wscript.quit(1)
end if
path_to = obj_to.self.path
request = "osql -o export.lst -h-1 -w 300 -E -d "
request=request&obj_db
request=request&" -S "
request=request&obj_srv
request=request&" /Q "&Chr(34)&"select FileDigest,FileName from tbFile where"
KB = InputBox("Введите номер нужного обновления, например KBxxxxxx",title)
if KB = "" then
wscript.quit(1)
else
request=request&" FileName like '%%"&KB&"%%'"
end if
request=request&"and (FileName like '%%ENU%%' or FileName like '%%RUS%%') and FileName like '%%.exe%%' and FileName not like '%%express%%' and FileName not like '%%IE%%' order by Modified"&Chr(34)
If oFSO.FileExists(".\export.lst") Then
oFSO.DeleteFile(".\export.lst")
end if
Set oExec = WshShell.Exec(request)
Do While oExec.Status = 0
WScript.Sleep 100
Loop
IF oExec.ExitCode = 1 then
MsgBox "Не удалось подключиться серверу WSUS..:("
oFSO.DeleteFile(".\export.lst")
wscript.quit(1)
end if
set objTextFile = oFSO.OpenTextFile(".\export.lst",1)
Do Until objTextFile.AtEndofStream
strNextLine=objTextFile.ReadLine
strNextLine=trim(strNextLine)
IF InStr (strNextLine,".exe") then
newArray=Split(strNextLine)
WSUSFile = right(newArray(0),40)&".exe"
WSUSFolder = right(newArray(0),2)
If oFSO.FileExists(obj_from&"\"&WSUSFolder&"\"&WSUSFile) Then
oFSO.CopyFile obj_from&"\"&WSUSFolder&"\"&WSUSFile, path_to&"\"&newArray(1)
end if
end if
Loop
objTextFile.Close
oFSO.DeleteFile(".\export.lst")
MsgBox "Операция выполнена успешно! :)"
Set obj = Nothing
Set obj_from = Nothing
Set obj_to = Nothing
Set oExec = Nothing
Set WshShell = Nothing
Set oFSO = Nothing
Set objTextFile = Nothing
Поместите скрипт в текстовый файл с расширением "
.vbs". После запуска понадобится указать путь для извлекаемых обновлений и номер KB, который нам нужен. Скрипт произведет поиск по базе WSUS-сервера и скопирует необходимые файлы из папок контента.
Комментариев нет:
Отправить комментарий