2013-10-28 39 views
0

我有script from msdn 但不解决任何问题,如果我需要留在那里等待输入“Y”需要时,我真正想要的只是绕过这一点。 我已经试图修改它,但不能得到它的工作,因为我不知道从vbs很多。通过VBS自动Windows更新无需用户干预

WUA_SearchDownloadInstall.vbs内容:

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

你可以尝试至于如果用户选择是每次用

strInput = "Y" 

更换的

strInput = WScript.StdIn.Readline 

所有实例。

+0

已经尝试过它,没有工作,它一直在等待用户输入。 (按任意键继续) – user1864458

+0

已在'installer.install'之前尝试过'installer.AllowSourcePrompts = false'和'installer.ForceQuiet = true'吗? –

+0

现在正在测试...只要我看到结果,我就会让你知道。 – user1864458

相关问题