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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM