Найти - Пользователи
Полная версия: PyWin32 + Remote WUA
Начало » Python для экспертов » PyWin32 + Remote WUA
1
Ctrl+Z
Имеется такая задача: проверить на удалённом 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

Но нет - это не работает: адрес вторым аргументом вызова ошибки не порождает - он просто игнорируется. Сломал весь ум об эту задачу, если у кого-то есть мысли на этот счёт, пожалуйста, поделитесь.
PEHDOM
“по аналогии” тут не работает, нужно долго и нудо читать MSDN в плане че оно принимает и в каком формате. Зачастую проще выполнить VBS через subprocess.popen или win32com.client.Dispatch(“ScriptControl”) и получить результат выполнения, чем пытаться разобраться как его запустить на чистом пайтоне.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB