使用Windows PowerShell快速安装WSUS更新

日期: 2012-06-05 作者:Greg Shields翻译:杨旭 来源:TechTarget中国 英文

每个Windows管理员的职业生涯中很有意义的一件事是命令行自动化的功能完全实现了。   之前,像PowerShell和VBScript这类的工具也许不常见。你也许能看到它们在完成小型任务上的价值,但是它们在创建自动化上花费的时间远远大于节省的时间。   总有一天,你会发现一个小小的脚本是如何将你的生活变得更加美好。

回到2007年,脚本对我来说是很小但功能很强大的WSUS黑客。厌烦了每个月都要在漫长的夜晚等待WSUS的调度器给服务器打补丁,我最终选择了脚本“你现在的补丁”VBScript。   它要花上许多天,并且做大量的网络搜索,但是我的努力最终以自己命名为“我的WSUS Big Red B……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

每个Windows管理员的职业生涯中很有意义的一件事是命令行自动化的功能完全实现了。

  之前,像PowerShell和VBScript这类的工具也许不常见。你也许能看到它们在完成小型任务上的价值,但是它们在创建自动化上花费的时间远远大于节省的时间。

  总有一天,你会发现一个小小的脚本是如何将你的生活变得更加美好。回到2007年,脚本对我来说是很小但功能很强大的WSUS黑客。厌烦了每个月都要在漫长的夜晚等待WSUS的调度器给服务器打补丁,我最终选择了脚本“你现在的补丁”VBScript

  它要花上许多天,并且做大量的网络搜索,但是我的努力最终以自己命名为“我的WSUS Big Red Button”的切实可行的方案结束。双击VBScript,任何Windows计算机都会立刻扫描更新,下载并安装更新,必要的话重启计算机。

  更好的是,这个脚本(或者更具体的说,Windows Update Agent)尊重WSUS应用配置,不管是手动或通过组策略。因此,任何计算机先前的部分WSUS基础设施将只安装有认可标志的更新。

  Red Button Mark II, PowerShell版本

  时代在变,脚本语言也在变。VBScript是长时间形成的手工艺品,现在被更强大的PowerShell所代替。因此,似乎是时间该将我的“立即安装WSUS更新”Big Red Button替代掉PowerShell了。
 
  下面是代码。远远短于VBScript,Big Red Button扫描Windows系统,下载并安装任何需要的更新,并依已安装的补丁需求进行重启。

  #定义更新标准
  $Criteria = "IsInstalled=0 and Type='Software'"

  #搜索相关更新
  $Searcher = New-Object -ComObject Microsoft.Update.Searcher
  $SearchResult = $Searcher.Search($Criteria).Updates

  #下载更新
  $Session = New-Object -ComObject Microsoft.Update.Session
  $Downloader = $Session.CreateUpdateDownloader()
  $Downloader.Updates = $SearchResult
  $Downloader.Download()

  #安装更新
  $Installer = New-Object -ComObject Microsoft.Update.Installer
  $Installer.Updates = $SearchResult
  $Result = $Installer.Install()

  #重启,如果安装更新时需要的话
  If ($Result.rebootRequired) { shutdown.exe /t 0 /r }
 
  对这个“入门”脚本需要解释一下的是,它是我目前使用过的精华产品之一。这个脚本和它需要的同样最小。这句话的意思是,在Windows电脑上执行它,这台机器将搜索任何相关的更新,下载这些更新(不论是配置的WSUS服务器或是微软的在线服务器),安装它们,并根据需求进行重启。

  我特意把这个脚本以最小的形式给你,给你一个机会来扩大对它的使用。我最初发表的VBScript是曾经发布的第一个解决这个特定问题的工具,现在在网上搜索“使用PowerShell安装WSUS更新”会带来更大的选择范围。那些的很大部分已经脱离通知、日志记录、收发邮件的结果文件和所有其他细节,使脚本像这些一样有用。它们掩盖了真正完成的工作。

  脚本的第一块提供识别那些你想要安装的更新标准。我列出了几个$Criteria例子,但是你可以在MSDN上的文档的帮助下添加自己的。

  第二块指导Windows Update Agent为本地电脑搜索缺失的更新。第三块利用存储在变量$SearchResult中的结果,开始更新下载。之后这些更新会在第四块进行安装。第五和最后一块查询安装进程,确认并强制进行必要的重启。

  因为本地的Windows Update Agent不管是手动或是通过组策略,将不更改配置。运行这个将只下载那些你已经批准了的更新并安装在你的WSUS控制台。在开始之前,首先在个别机器上启动这个脚本。如果一台机器没有本地的WSUS服务配置,Windows Update Agent将脱离微软互联网服务器查询微软认为适当(和符合你自己添加的标准)的补丁。

   你可以往PowerShell脚本上添加很多东西,像数据采集和报告、报告邮件和各样的if/then语句和将一切都联系在一起的验证。

   即使你之前从来没有使用过脚本,这样小的自动化提供了一个契机来赚回你的宝贵时间。希望有了它你可以消除又一个令人厌烦的枯燥的工作,让你轻松成为一个更高效的Windows管理员。

作者

Greg Shields
Greg Shields

Greg Shields,MCSE(微软认证系统工程师),是Concentrated Technology(www.concentratedtechnology.com)共同创始人和IT技术专家。他拥有近十五年的IT架构和企业管理经验。同时,也是一名IT培训师,并对IT多个技术主题进行演讲,主要包括微软管理、系统管理及监控、虚拟化等。他最近的著作是由SAPIEN出版社出版的《Windows Server 2008: What's New/What's Changed》。

相关推荐