Как CreateUpdateDownloader узнает, какие файлы скачивать?
Как CreateUpdateDownloader
скачать файлы? Я спрашиваю, потому что моей системе не хватает 4 КБ.
Я получаю название 4 пропущенных КБ от итерации коллекции обновлений в моем скрипте.
Когда я назначаю эту коллекцию CreateUpdateDownloader
Тем не менее, я нахожу только 1 КБ в C:\Windows\SoftwareDistribution\Download.
Есть мысли, почему он не загрузил остальные 3 КБ? Да, я только сейчас просматриваю и скачиваю, пытаясь узнать, как это работает, наблюдая за этим в действии. Я доберусь до установки позже, так как хочу кое-что настроить.
Код следует:
Dim session : Set session = CreateObject("Microsoft.Update.Session")
Dim search : Set search = session.CreateUpdateSearcher()
WScript.Echo "Searching for updates..." & vbCrLF
Set result = search.Search("IsInstalled=0 AND Type='Software' AND IsHidden=0")
WScript.Echo "Missing KBs:"
For i = 0 To result.Updates.Count -1 'last item in the collection always seems to be some kind of gibberish null.
Set update = result.Updates.Item(i)
WScript.Echo i + 1 & "> " & update.Title
Next
If result.Updates.Count = 0 Then
WScript.Echo "There are no applicable updates."
End If
Set downloader = session.CreateUpdateDownloader()
downloader.Updates = result.Updates ' updatesToDownload
downloader.Download()
1 ответ
Для сбора обновлений для загрузки необходимо использовать Microsoft.Update.UpdateColl. Функция CopyFromCache позволяет скачать локальную копию обновления. Свойство DownloadURL позволит вам скачать его из Интернета. Это было очень полезно iupdate объект документации
Это мой "первый" подход к коду. Первые 5 обновлений загружаются в каталог d:\updates и отображаются соответствующие URL-адреса.
Dim session : Set session = CreateObject("Microsoft.Update.Session")
Dim search : Set search = session.CreateUpdateSearcher()
WScript.Echo "Searching for updates..." & vbCrLF
Set result = search.Search("IsInstalled=0 AND Type='Software' AND IsHidden=0")
WScript.Echo "Missing KBs:"
For i = 0 To result.Updates.Count -1 'last item in the collection always seems to be some kind of gibberish null.
Set update = result.Updates.Item(i)
WScript.Echo i + 1 & "> " & update.Title
Next
If result.Updates.Count = 0 Then
WScript.Echo "There are no applicable updates."
End If
Set updatesToDownload = CreateObject("Microsoft.Update.UpdateColl")
Set downloader = session.CreateUpdateDownloader()
'For I = 0 to result.Updates.Count-1
For I = 0 to 5
Set update = result.Updates.Item(I)
updatesToDownload.Add(update)
Next
WScript.Echo vbCRLF & "Downloading updates..."
downloader.Updates = updatesToDownload
downloader.Download()
'For I = 0 to result.Updates.Count-1
for i=0 to 5
for each upd in downloader.Updates.Item(i).BundledUpdates
upd.CopyFromCache "d:\UPDATES", False
for each content in upd.DownloadContents
wscript.echo "url: " & content.DownloadURL
next
next
next