2017-12-22 27 views
-1

セキュリティアップデートの確認、ダウンロード、およびインストールに役立つスクリプトを探しています。Windowsアップデートを確認、ダウンロード、インストールする(セキュリティおよび重要なアップデートのみ)

すべての更新をチェックするこのスクリプトが見つかりました。 https://gallery.technet.microsoft.com/scriptcenter/VB-Script-to-Check-and-620579cd#content

我々はまた、この記事を見つけましたが、C# https://msdn.microsoft.com/en-us/library/windows/desktop/ms744616(v=vs.85).aspx

最初の記事では、我々は唯一のセキュリティアップデートをしたいの例外にしたいまさにないことがあります。

他の誰かが私たちと一緒に結婚することができますか?我々は我々が取得したいされている場合、私たちを取得します感じて、第2のリンクのコード行が開始されます。

//Subscribe to receive critical updates. 

いずれかが、すべてのヘルプは素晴らしいことです。

ここでは、私たちがこの時点で取り組んできた出力スクリプトのコピーです。

Set updateSession = CreateObject("Microsoft.Update.Session") 
updateSession.ClientApplicationID = "MSDN Sample Script" 

Set updateSearcher = updateSession.CreateUpdateSearcher() 

WScript.Echo "Searching for updates..." & vbCRLF 

Set searchResult = _ 
updateSearcher.Search("IsInstalled=0 and Type='Software' and IsHidden=0") 

WScript.Echo "List of applicable items on the machine:" 

For I = 0 To searchResult.Updates.Count-1 
    Set update = searchResult.Updates.Item(I) 
    WScript.Echo I + 1 & "> " & update.Title 
Next 

If searchResult.Updates.Count = 0 Then 
    WScript.Echo "There are no applicable updates." 
    WScript.Quit 
End If 

WScript.Echo vbCRLF & "Creating collection of updates to download:" 

Set updatesToDownload = CreateObject("Microsoft.Update.UpdateColl") 

For I = 0 to searchResult.Updates.Count-1 
    Set update = searchResult.Updates.Item(I) 
    addThisUpdate = false 
    If update.InstallationBehavior.CanRequestUserInput = true Then 
     WScript.Echo I + 1 & "> skipping: " & update.Title & _ 
     " because it requires user input" 
    Else 
     If update.EulaAccepted = false Then 
      WScript.Echo I + 1 & "> note: " & update.Title & _ 
      " has a license agreement that must be accepted:" 
      WScript.Echo update.EulaText 
      WScript.Echo "Do you accept this license agreement? (Y/N)" 
      strInput = WScript.StdIn.Readline 
      WScript.Echo 
      If (strInput = "Y" or strInput = "y") Then 
       update.AcceptEula() 
       addThisUpdate = true 
      Else 
       WScript.Echo I + 1 & "> skipping: " & update.Title & _ 
       " because the license agreement was declined" 
      End If 
     Else 
      addThisUpdate = true 
     End If 
    End If 
    If addThisUpdate = true Then 
     WScript.Echo I + 1 & "> adding: " & update.Title 
     updatesToDownload.Add(update) 
    End If 
Next 

If updatesToDownload.Count = 0 Then 
    WScript.Echo "All applicable updates were skipped." 
    WScript.Quit 
End If 

WScript.Echo vbCRLF & "Downloading updates..." 

Set downloader = updateSession.CreateUpdateDownloader() 
downloader.Updates = updatesToDownload 
downloader.Download() 

Set updatesToInstall = CreateObject("Microsoft.Update.UpdateColl") 

rebootMayBeRequired = false 

WScript.Echo vbCRLF & "Successfully downloaded updates:" 

For I = 0 To searchResult.Updates.Count-1 
    set update = searchResult.Updates.Item(I) 
    If update.IsDownloaded = true Then 
     WScript.Echo I + 1 & "> " & update.Title 
     updatesToInstall.Add(update) 
     If update.InstallationBehavior.RebootBehavior > 0 Then 
      rebootMayBeRequired = true 
     End If 
    End If 
Next 

If updatesToInstall.Count = 0 Then 
    WScript.Echo "No updates were successfully downloaded." 
    WScript.Quit 
End If 

If rebootMayBeRequired = true Then 
    WScript.Echo vbCRLF & "These updates may require a reboot." 
End If 

WScript.Echo vbCRLF & "Would you like to install updates now? (Y/N)" 
strInput = WScript.StdIn.Readline 
WScript.Echo 

If (strInput = "Y" or strInput = "y") Then 
    WScript.Echo "Installing updates..." 
    Set installer = updateSession.CreateUpdateInstaller() 
    installer.Updates = updatesToInstall 
    Set installationResult = installer.Install() 

    'Output results of install 
    WScript.Echo "Installation Result: " & _ 
    installationResult.ResultCode 
    WScript.Echo "Reboot Required: " & _ 
    installationResult.RebootRequired & vbCRLF 
    WScript.Echo "Listing of updates installed " & _ 
    "and individual installation results:" 

    For I = 0 to updatesToInstall.Count - 1 
     WScript.Echo I + 1 & "> " & _ 
     updatesToInstall.Item(i).Title & _ 
     ": " & installationResult.GetUpdateResult(i).ResultCode 
    Next 
End If 

答えて

0

その他すべてが失敗した場合は、WSUS Offline Updaterを試してみてください。それは自動化することができ、それはPC技術者によって高い評価を受けています。 video tutorial/reviewもあります。私はMicrosoftが故意に新しいハードウェア上のWin7ユーザーのための更新メカニズムを破ったので、Windows 7のパッチを維持するためにそれを使用します。

関連する問題