Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 2, 2017 08:31:44

Ctrl+Z
Зарегистрирован: 2017-06-02
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

PyWin32 + Remote WUA

Имеется такая задача: проверить на удалённом Windows-хосте, есть ли доступные для установки обновления. Возникла мысль задействовать для этой цели Windows WUA API. Для локалхоста это делается довольно просто:

 import win32com.client
import win32con
import win32api
def main(args):
    objWUA = win32com.client.Dispatch("Microsoft.Update.Session")
    objSeeker = objWUA.CreateUpdateSearcher()
    # Поиск доступных обновлений
    objAvailables = objSeeker.Search("IsInstalled=0")
    objSearch = win32com.client.Dispatch("Microsoft.Update.UpdateColl")
    print(len(objAvailables.Updates))
    return 0
if __name__ == '__main__':
    import sys
    sys.exit(main(sys.argv))

Теперь, казалось бы, всё просто - скормить диспатчеру вместе с вызовом “Microsoft.Update.Session” адрес хоста по аналогии с VBScript:

 Set USession = CreateObject("Microsoft.Update.Session", "10.138.0.200")
Set USearcher = USession.CreateUpdateSearcher()
Set Result = USearcher.Search("IsInstalled=0")
WScript.Echo Result.Updates.Count

Но нет - это не работает: адрес вторым аргументом вызова ошибки не порождает - он просто игнорируется. Сломал весь ум об эту задачу, если у кого-то есть мысли на этот счёт, пожалуйста, поделитесь.

Офлайн

#2 Июнь 2, 2017 10:19:33

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

PyWin32 + Remote WUA

“по аналогии” тут не работает, нужно долго и нудо читать MSDN в плане че оно принимает и в каком формате. Зачастую проще выполнить VBS через subprocess.popen или win32com.client.Dispatch(“ScriptControl”) и получить результат выполнения, чем пытаться разобраться как его запустить на чистом пайтоне.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Июнь 2, 2017 10:20:19)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version