配置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)