如何从命令行安装Windows更新

是否有可能从命令行安装Windows更新? graphics更新工具似乎没有在Windows 7中工作得很好。有时候,它有时并不…我的问题是,当我点击查看详细信息列表时,我看不到任何更新。 所以当有更新没有默认closures,我不能安装它们…

那么,有没有其他的方式可以让我们安装?

不确定Windows 7,但XP / Vista,您可以运行以下命令来检测和下载更新:

wuauclt /detectnow /reportnow 

如果您在使用WSUS时遇到问题,请查看WSUS Wiki 。

否则,如果您有特定的更新,只需从Microsoft网站下载即可。 如果有一些问题阻止您安装,那么这是找出最好的方法,因为Windows更新日志是需要处理的。

您可以使用脚本同步检查,下载和安装更新。 我经常使用此vbscript的修改版本来手动修补Windows核心服务器。

 Set updateSession = CreateObject("Microsoft.Update.Session") updateSession.ClientApplicationID = "MSDN Sample Script" Set updateSearcher = updateSession.CreateUpdateSearcher() WScript.Echo "Searching for updates..." & vbCRLF Set searchResult = _ updateSearcher.Search("IsInstalled=0 and Type='Software' and IsHidden=0") WScript.Echo "List of applicable items on the machine:" For I = 0 To searchResult.Updates.Count-1 Set update = searchResult.Updates.Item(I) WScript.Echo I + 1 & "> " & update.Title Next If searchResult.Updates.Count = 0 Then WScript.Echo "There are no applicable updates." WScript.Quit End If WScript.Echo vbCRLF & "Creating collection of updates to download:" Set updatesToDownload = CreateObject("Microsoft.Update.UpdateColl") For I = 0 to searchResult.Updates.Count-1 Set update = searchResult.Updates.Item(I) addThisUpdate = false If update.InstallationBehavior.CanRequestUserInput = true Then WScript.Echo I + 1 & "> skipping: " & update.Title & _ " because it requires user input" Else If update.EulaAccepted = false Then WScript.Echo I + 1 & "> note: " & update.Title & _ " has a license agreement that must be accepted:" WScript.Echo update.EulaText WScript.Echo "Do you accept this license agreement? (Y/N)" strInput = WScript.StdIn.Readline WScript.Echo If (strInput = "Y" or strInput = "y") Then update.AcceptEula() addThisUpdate = true Else WScript.Echo I + 1 & "> skipping: " & update.Title & _ " because the license agreement was declined" End If Else addThisUpdate = true End If End If If addThisUpdate = true Then WScript.Echo I + 1 & "> adding: " & update.Title updatesToDownload.Add(update) End If Next If updatesToDownload.Count = 0 Then WScript.Echo "All applicable updates were skipped." WScript.Quit End If WScript.Echo vbCRLF & "Downloading updates..." Set downloader = updateSession.CreateUpdateDownloader() downloader.Updates = updatesToDownload downloader.Download() Set updatesToInstall = CreateObject("Microsoft.Update.UpdateColl") rebootMayBeRequired = false WScript.Echo vbCRLF & "Successfully downloaded updates:" For I = 0 To searchResult.Updates.Count-1 set update = searchResult.Updates.Item(I) If update.IsDownloaded = true Then WScript.Echo I + 1 & "> " & update.Title updatesToInstall.Add(update) If update.InstallationBehavior.RebootBehavior > 0 Then rebootMayBeRequired = true End If End If Next If updatesToInstall.Count = 0 Then WScript.Echo "No updates were successfully downloaded." WScript.Quit End If If rebootMayBeRequired = true Then WScript.Echo vbCRLF & "These updates may require a reboot." End If WScript.Echo vbCRLF & "Would you like to install updates now? (Y/N)" strInput = WScript.StdIn.Readline WScript.Echo If (strInput = "Y" or strInput = "y") Then WScript.Echo "Installing updates..." Set installer = updateSession.CreateUpdateInstaller() installer.Updates = updatesToInstall Set installationResult = installer.Install() 'Output results of install WScript.Echo "Installation Result: " & _ installationResult.ResultCode WScript.Echo "Reboot Required: " & _ installationResult.RebootRequired & vbCRLF WScript.Echo "Listing of updates installed " & _ "and individual installation results:" For I = 0 to updatesToInstall.Count - 1 WScript.Echo I + 1 & "> " & _ updatesToInstall.Item(i).Title & _ ": " & installationResult.GetUpdateResult(i).ResultCode Next End If 

它似乎像一个魅力的工作,但我没有在Windows 7下testing它当然。 还有一个链接指向另一篇文章,如果需要定位特定的更新。

还有一个Powershell模块 ,揭示了类似的经验。

快速浏览一下,我也发现这个第三方应用程序 ,也使用更新API,但有一些更多的select(虽然要求你相信第三方代码)。

Windows命令行更新:

http://www.sysadminsoftware.com/udc.html

该工具(更新部署指挥官)可以做你刚才所要求的。 您还可以传递参数以避免某些修补程序,目标特定更新,完成后N分钟重新启动,以CSV格式创build报告等等。它也带有一些GUI实用程序。

如果您必须修补Windows操作系统,特别是在全新安装之后,请仔细看看Offline Updater 。

它使用脚本下载所有你build议的补丁(如Win2000,Win XP,Win 2003,Vista,Win2008,Win2012 32和64位),多语言,Service Pack,.NET框架和Office补丁(XP,2000 ,2003,2007)。

一旦你有他们所有的下载,你只是更新周二的每个补丁,只得到的变化。 虽然它确实得到了催化剂,他们每天都变得更长(现在每个操作系统/办公室的版本有很多)。

一旦你下载了本地机器上的文件,就有一个脚本来制作它们的CD / DVD映像(如果你愿意的话,它会自动为每个操作系统的DVD映像制作)。

我所做的是使用一个4GB的SD存储卡,在一个SD卡读卡器,尊重写保护选项卡。 我曾经使用2GB的卡,但我可以勉强适应Win XP,现在大部分的Office都build立在它上面,所以我转向了4GB的卡。

因此,当对一台机器进行故障排除时,我相信我知道我的设备是写保护的,因此将这个以前可写入的设备插入一个不受信任的,可能受病毒感染的机器中(因为我对此一无所知,我假设它已被感染)。

因此,我可以修补它作为第一步。

如果您使用自动运行,或启动设备上的可执行文件(密钥,外部HD,CD,DVD,无论您在哪里编写它),它都会启动一个脚本,使用本地计算机上的Windows Update服务来应用所有更新,通过电线下载它只是使用本地副本。

因此,将WinXP机器更新到最新的SP和补丁程序可能还需要1个多小时,但是一路上没有networkingstream量,你可以用以太网电缆完全拔掉。

令人惊讶的有用的工具!

不应该和微软发生冲突,就像自动更新人员,他们是在制作一张补丁光盘,分发光盘镜像。 这个工具更新脚本,你必须去获得授权的Windows工作站上的所有补丁。

我目前无法通过duffbeer703添加评论,所以这里作为一个单独的答案:

在Internet Archive上存档的WSUSwiki链接的最后一个“正确”版本是这样的 。 在这个FAQ条目中描述了原始答案中给出的选项。

我不这么认为,Windows Update需要一些ActiveX和其他与Internet Explorer的集成才能正常工作。

由于Windows 7仍然只是一个候选版本,所以您应该预料到这些types的错误。

如果您是MSDN的成员,可能会明智地向开发团队提交具体的错误。