配置Windows Update更新下载及安装方式:

 #NotificationLevel说明:
# 0:未配置,不会对当前设置进行更改
# 1:从不检查更新
# 2:检查更新,但是让我选择是否下载和安装更新
# 3:下载更新,但是让我选择是否安装更新
# 4:自动安装更新 $AutoUpdateSettings = (New-Object -com "Microsoft.Update.AutoUpdate").Settings
$AutoUpdateSettings.NotificationLevel =3
#$AutoUpdateSettings.ScheduledInstallationDay =1 # 0表示每天;1表示每周日;2表示每周一......
#$AutoUpdateSettings.ScheduledInstallationTime =2 # 0表示0:00;1表示1:00;2表示2:00......,仅当.NotificationLevel =4时有效
$AutoUpdateSettings.Save()
(New-Object -com "Microsoft.Update.AutoUpdate").Settings

#检索、下载、安装更新

 #检索更新
$updatesession = New-Object -com Microsoft.Update.Session
$updatesession.ClientApplicationID = "CAID"
$searcher = $updatesession.CreateUpdateSearcher()
#查找未安装的更新(从 已经从Microsoft Update检索到的更新中 进行检索,包含下载或未被下载的更新)
$updates_search = $searcher.search("IsInstalled= 0")
#查找未安装并且未被隐藏的更新( IsInstalled = 0 and IsHidden = 0 )
#$updates_search = $searcher.search("IsInstalled = 0 and IsHidden = 0") ###("Type='Software'")
#并不是所有的属性都可以被搜索,有关详细信息参考MSDN:http://msdn.microsoft.com/en-us/library/windows/desktop/aa387101(v=vs.85).aspx
$updates = $updates_search.updates
#查找已下载的更新
$updates_downloaded = $updates |? {$_.IsDownloaded -eq $true}
#查找已下载的更新的标题、重要级别
$updates_downloaded | % {$_ |Select Title,MsrcSeverity} #可选更新的MsrcSeverity值为空 #下载更新:
#查找未下载的更新
$updates_undownloaded = $updates |? {$_.IsDownloaded -eq $false}
$updates_undownloaded[0].title ##kb2506928
$updates_undownloaded.count #把未下载的更新加入下载列表
$updatesToDownload = New-Object -Com Microsoft.Update.UpdateColl
$updatesToDownload.Add($updates_undownloaded[0]) #下载所需要的更新
$downloader = $updatesession.CreateUpdateDownloader()
$downloader.Updates = $updatesToDownload
$downloadResult = $downloader.Download()
$downloadResult |select isdownloaded #安装更新
#把需要进行安装的更新加入安装列表
$updatestoinstall = New-Object -Com Microsoft.Update.UpdateColl
Foreach ($update in $updates_downloaded)
{
$updatestoinstall.Add($update)
}
$updatestoinstall.count #开始安装更新
$installer = $updatesession.CreateUpdateInstaller()
$installer.Updates = $updatestoinstall
$installer.Install()
$installationResults = $installer.Install() #查看更新安装结果
$results=$null
$results=@()
For ($i=0;$i -lt $updatestoinstall.count;$i++)
{
$result = ""|Select Title,ResultCode,RebootRequired
$result.title = $updatestoinstall.item($i).Title
$result.ResultCode = $installationResults.GetUpdateResult($i).ResultCode
$result.RebootRequired = $installationResults.GetUpdateResult($i).RebootRequired
$results += $result
}
$results

 自动下载安装重要更新:

 #该脚本用来检索重要更新并下载、安装
$updatesession = New-Object -com Microsoft.Update.Session
$updatesession.ClientApplicationID = "CAID"
$searcher = $updatesession.CreateUpdateSearcher()
#查找未安装的更新(从 已经从Microsoft Update检索到的更新中 进行检索,包含下载或未被下载的更新)
$updates_search = $searcher.search("IsInstalled= 0")
$updates = $updates_search.updates #过滤重要的更新
$updates_important = $updates| ? {$_.MsrcSeverity -ne $null}
$updatesToDownload = New-Object -Com Microsoft.Update.UpdateColl
Foreach ($updated in $updates_important)
{
If ($updated.IsDownloaded -eq $false)
{
#把未下载的更新加入下载列表
$updatesToDownload.Add($updated)
}
}
#下载所需要的更新,在更新下载过程中脚本会停止
If ($updatesToDownload.count -ne 0)
{
$downloader = $updatesession.CreateUpdateDownloader()
$downloader.Updates = $updatesToDownload
$downloadResult = $downloader.Download()
}
Write-Host "Update is downloading,Please wait..." #把需要进行安装的更新加入安装列表
$updatestoinstall = New-Object -Com Microsoft.Update.UpdateColl
Foreach ($update in $updates_important)
{
$updatestoinstall.Add($update)
} #开始安装更新
$installer = $updatesession.CreateUpdateInstaller()
$installer.Updates = $updatestoinstall
$installer.Install()
$installationResults = $installer.Install() #查看更新安装结果
$results=$null
$results=@()
For ($i=0;$i -lt $updatestoinstall.count;$i++)
{
$i
$result = ""|Select Title,ResultCode,RebootRequired
$result.title = $updatestoinstall.item($i).Title
$result.ResultCode = $installationResults.GetUpdateResult($i).ResultCode
$result.RebootRequired = $installationResults.GetUpdateResult($i).RebootRequired
$results += $result
}
$results

Windows Update相关COM组件:

Microsoft.Update.AutoUpdate :提供了对Microsoft Update自动更新计划的管理

Microsoft.Update.UpdateColl:提供了Microsoft Update更新的下载、安装 (http://msdn.microsoft.com/en-us/library/windows/desktop/aa386107(v=vs.85).aspx)

Microsoft.Update.Installer: 允许从Microsoft Update安装更新 (http://msdn.microsoft.com/en-us/library/windows/desktop/aa386491(v=vs.85).aspx)

Microsoft.Update.Searcher:从Microsoft Update更新提供搜索功能

Microsoft.Update.Session:提供对有关Microsoft Update本地历史记录的信息的访问 (http://msdn.microsoft.com/en-us/library/windows/desktop/aa386854(v=vs.85).aspx)

Microsoft.Update.SystemInfo:提供对当前系统与Microsoft Update有关的信息的访问

参考:http://msdn.microsoft.com/en-us/library/windows/desktop/aa387102(v=vs.85).aspx (VBS_WUA)

最新文章

  1. JXL操作Excel
  2. form表单的enter自动提交
  3. freeCodeCamp:Seek and Destroy
  4. Linux学习书籍推荐
  5. CF149D. Coloring Brackets[区间DP !]
  6. angularjs+jasmine单元测试入门
  7. Struts2配置详解_配置Action
  8. FileReader本地预览图片
  9. 前端学习资源(js)
  10. 在FreeBSD上安装Bugzilla
  11. Valgrind简介:
  12. Stackful 协程库 libgo(单机100万协程)
  13. CSS3可按进度变色的进度条
  14. phper談談最近重構代碼的感受(3)
  15. Quart.Net分布式任务管理平台
  16. tomcat 设置jvm 参数
  17. jqGrid整合篇
  18. pytest自动化7:assert断言
  19. python学习之re库
  20. 2018-2019 ACM-ICPC Pacific Northwest Regional Contest (Div. 1)

热门文章

  1. 基于ffmpeg的简单音视频编解码的例子
  2. live555学习之基本类介绍及计划任务深度探讨
  3. MVC&WebForm对照学习:ajax异步请求
  4. 【转】cocos2d-x 3x Sprite3D
  5. js获取客户端IP及地理位置
  6. Delphi 编译错误信息表
  7. HDU5780 gcd (BestCoder Round #85 E) 欧拉函数预处理——分块优化
  8. <转>亲手缔造DNS体系,创建DNS私有根:DNS系列之六
  9. <Chapter 2>2-2.开发应用(developing the Application)
  10. linux 下的进程管理工具 supervisor