配置Windows Update,补丁更新
配置Windows Update更新下载及安装方式:
1 #NotificationLevel说明: 2 # 0:未配置,不会对当前设置进行更改 3 # 1:从不检查更新 4 # 2:检查更新,但是让我选择是否下载和安装更新 5 # 3:下载更新,但是让我选择是否安装更新 6 # 4:自动安装更新 7 8 $AutoUpdateSettings = (New-Object -com "Microsoft.Update.AutoUpdate").Settings 9 $AutoUpdateSettings.NotificationLevel =3 10 #$AutoUpdateSettings.ScheduledInstallationDay =1 # 0表示每天;1表示每周日;2表示每周一...... 11 #$AutoUpdateSettings.ScheduledInstallationTime =2 # 0表示0:00;1表示1:00;2表示2:00......,仅当.NotificationLevel =4时有效 12 $AutoUpdateSettings.Save() 13 (New-Object -com "Microsoft.Update.AutoUpdate").Settings
#检索、下载、安装更新
1 #检索更新 2 $updatesession = New-Object -com Microsoft.Update.Session 3 $updatesession.ClientApplicationID = "CAID" 4 $searcher = $updatesession.CreateUpdateSearcher() 5 #查找未安装的更新(从 已经从Microsoft Update检索到的更新中 进行检索,包含下载或未被下载的更新) 6 $updates_search = $searcher.search("IsInstalled= 0") 7 #查找未安装并且未被隐藏的更新( IsInstalled = 0 and IsHidden = 0 ) 8 #$updates_search = $searcher.search("IsInstalled = 0 and IsHidden = 0") ###("Type='Software'") 9 #并不是所有的属性都可以被搜索,有关详细信息参考MSDN:http://msdn.microsoft.com/en-us/library/windows/desktop/aa387101(v=vs.85).aspx 10 $updates = $updates_search.updates 11 #查找已下载的更新 12 $updates_downloaded = $updates |? {$_.IsDownloaded -eq $true} 13 #查找已下载的更新的标题、重要级别 14 $updates_downloaded | % {$_ |Select Title,MsrcSeverity} #可选更新的MsrcSeverity值为空 15 16 #下载更新: 17 #查找未下载的更新 18 $updates_undownloaded = $updates |? {$_.IsDownloaded -eq $false} 19 $updates_undownloaded[0].title ##kb2506928 20 $updates_undownloaded.count 21 22 #把未下载的更新加入下载列表 23 $updatesToDownload = New-Object -Com Microsoft.Update.UpdateColl 24 $updatesToDownload.Add($updates_undownloaded[0]) 25 26 #下载所需要的更新 27 $downloader = $updatesession.CreateUpdateDownloader() 28 $downloader.Updates = $updatesToDownload 29 $downloadResult = $downloader.Download() 30 $downloadResult |select isdownloaded 31 32 33 34 #安装更新 35 #把需要进行安装的更新加入安装列表 36 $updatestoinstall = New-Object -Com Microsoft.Update.UpdateColl 37 Foreach ($update in $updates_downloaded) 38 { 39 $updatestoinstall.Add($update) 40 } 41 $updatestoinstall.count 42 43 #开始安装更新 44 $installer = $updatesession.CreateUpdateInstaller() 45 $installer.Updates = $updatestoinstall 46 $installer.Install() 47 $installationResults = $installer.Install() 48 49 #查看更新安装结果 50 $results=$null 51 $results=@() 52 For ($i=0;$i -lt $updatestoinstall.count;$i++) 53 { 54 $result = ""|Select Title,ResultCode,RebootRequired 55 $result.title = $updatestoinstall.item($i).Title 56 $result.ResultCode = $installationResults.GetUpdateResult($i).ResultCode 57 $result.RebootRequired = $installationResults.GetUpdateResult($i).RebootRequired 58 $results += $result 59 } 60 $results
自动下载安装重要更新:
1 #该脚本用来检索重要更新并下载、安装 2 $updatesession = New-Object -com Microsoft.Update.Session 3 $updatesession.ClientApplicationID = "CAID" 4 $searcher = $updatesession.CreateUpdateSearcher() 5 #查找未安装的更新(从 已经从Microsoft Update检索到的更新中 进行检索,包含下载或未被下载的更新) 6 $updates_search = $searcher.search("IsInstalled= 0") 7 $updates = $updates_search.updates 8 9 #过滤重要的更新 10 $updates_important = $updates| ? {$_.MsrcSeverity -ne $null} 11 $updatesToDownload = New-Object -Com Microsoft.Update.UpdateColl 12 Foreach ($updated in $updates_important) 13 { 14 If ($updated.IsDownloaded -eq $false) 15 { 16 #把未下载的更新加入下载列表 17 $updatesToDownload.Add($updated) 18 } 19 } 20 #下载所需要的更新,在更新下载过程中脚本会停止 21 If ($updatesToDownload.count -ne 0) 22 { 23 $downloader = $updatesession.CreateUpdateDownloader() 24 $downloader.Updates = $updatesToDownload 25 $downloadResult = $downloader.Download() 26 } 27 Write-Host "Update is downloading,Please wait..." 28 29 #把需要进行安装的更新加入安装列表 30 $updatestoinstall = New-Object -Com Microsoft.Update.UpdateColl 31 Foreach ($update in $updates_important) 32 { 33 $updatestoinstall.Add($update) 34 } 35 36 #开始安装更新 37 $installer = $updatesession.CreateUpdateInstaller() 38 $installer.Updates = $updatestoinstall 39 $installer.Install() 40 $installationResults = $installer.Install() 41 42 #查看更新安装结果 43 $results=$null 44 $results=@() 45 For ($i=0;$i -lt $updatestoinstall.count;$i++) 46 { 47 $i 48 $result = ""|Select Title,ResultCode,RebootRequired 49 $result.title = $updatestoinstall.item($i).Title 50 $result.ResultCode = $installationResults.GetUpdateResult($i).ResultCode 51 $result.RebootRequired = $installationResults.GetUpdateResult($i).RebootRequired 52 $results += $result 53 } 54 $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)