Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows CreateUpdateDownloader如何知道下载哪些文件?_Windows_Vbscript_Wuapi - Fatal编程技术网

Windows CreateUpdateDownloader如何知道下载哪些文件?

Windows CreateUpdateDownloader如何知道下载哪些文件?,windows,vbscript,wuapi,Windows,Vbscript,Wuapi,CreateUpdateDownloader如何下载文件?我问是因为我的系统缺少4kbs 通过在脚本中迭代更新集合,我得到了缺少的4个KBs的标题 但是,当我将该集合分配给CreateUpdateDownloader时,我在C:\Windows\SoftwareDistribution\Download中只找到1KB 有没有想过为什么它没有下载其他3kbs?是的,我现在只想扫描和下载——试着通过观察它的运行来了解它是如何工作的。我将在以后安装,因为我想调整其中的一些 守则如下: Dim sess

CreateUpdateDownloader
如何下载文件?我问是因为我的系统缺少4kbs

通过在脚本中迭代更新集合,我得到了缺少的4个KBs的标题

但是,当我将该集合分配给
CreateUpdateDownloader
时,我在C:\Windows\SoftwareDistribution\Download中只找到1KB

有没有想过为什么它没有下载其他3kbs?是的,我现在只想扫描和下载——试着通过观察它的运行来了解它是如何工作的。我将在以后安装,因为我想调整其中的一些

守则如下:

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()

必须使用它Microsoft.Update.UpdateColl来收集要下载的更新。 函数CopyFromCache允许下载更新的本地副本。 属性下载URL将允许您从Internet下载。 这是非常有用的

这是我“第一次”编写代码。 前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 

正在检查可能请求用户输入或提供EULA的更新。这里会是这样吗?
%windir%\WindowsUpdate.log
说了什么?@AnsgarWiechers。。。谢谢你的回复。在Win 10中,日志是*.etl文件,需要使用事件查看器打开。然而,日志没有任何警告或错误。另外,由于原始脚本在下载后包含了EULA/确认内容,我希望它至少可以先下载KBs。但它只下载了其中一个,而不是它说的我需要的全部四个。最终我想把KBs和sneaker网络带到永远不会连接到互联网的计算机上。。。这就是为什么我现在对原始脚本的安装部分不感兴趣的原因。当在WSUS之外运行KBs时,/q开关无论如何都会处理EULA。Thank@JoSerra上有一个具有类似功能的PowerShell代码。。。我必须出城,但我会稍后再查。敬请期待!谢谢@JoSerra。。。但奇怪的事情发生了。您的脚本找到2个缺少的更新,但只下载其中一个:搜索更新。。。缺少KBs:1>2017-07针对基于x64的系统的适用于Windows 10版本1703的Adobe Flash Player安全更新(KB4025376)2>2017-07针对基于x64的系统的适用于Windows 10版本1703的累积更新(KB4032188)下载更新。。。url:c:\Users\dogzilla\Desktop\joserra.vbs(28,4)(null):0x80248007要运行这些脚本,必须使用提升权限(以管理员选项的身份运行),否则将触发0x80248007。缺少更新可能与选择条件“IsInstalled=0,Type='Software'和IsHidden=0”有关?尝试另一个选择。不是这样——我是以管理员身份运行的。您是否能够了解哪些参数(例如,IsInstalled、IsInstalled、IsHidden等)可用?我在TechNet上查看了CreateUpdateDownloader API,它没有参数/参数列表。谢谢