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