Suchen, Herunterladen und Installieren bestimmter Updates
Das Skriptbeispiel in diesem Thema zeigt, wie Sie den Windows Update-Agent (WUA) verwenden, um ein bestimmtes Update zu scannen, herunterzuladen und zu installieren. Das Update kann durch seinen Titel angegeben werden.
Im Beispiel wird nach einem bestimmten Software-Update gesucht, das Update heruntergeladen und anschließend das Update installiert. Beispielsweise kann ein Benutzer diese Methode verwenden, um festzustellen, ob ein kritisches Sicherheitsupdate auf einem Computer installiert ist. Wenn das Update nicht installiert ist, kann der Benutzer sicherstellen, dass das Update heruntergeladen und installiert wird. Der Benutzer kann auch sicherstellen, dass er über den Status der Installation benachrichtigt wird.
Das Beispielupdate wird durch den Updatetitel in der Title-Eigenschaft von IUpdate identifiziert. Der Titel des Updates, das in diesem Beispiel vorgeschlagen wird, lautet „Update for Windows Rights Management Client 1.0“.
Hinweis
Informationen zum Suchen, Herunterladen und Installieren aller Updates, die für eine bestimmte Anwendung gelten, finden Sie unter Suchen, Herunterladen und Installieren von Updates.
Bevor Sie versuchen, dieses Beispiel auszuführen, beachten Sie Folgendes:
- WUA muss auf dem Computer installiert sein. Weitere Informationen zum Ermitteln der installierten WUA-Version finden Sie unter Ermitteln der aktuellen Version von WUA.
- Das Beispiel stellt keine eigene Benutzeroberfläche bereit. WUA fordert den Benutzer auf, den Computer neu zu starten, wenn ein Update einen Neustart erfordert.
- Das Beispiel kann Updates nur von WUA herunterladen. Es kann keine Updates von einem Software Update Services (SUS)1.0-Server herunterladen.
- Zum Ausführen dieses Beispiels ist Windows Script Host (WSH) erforderlich. Weitere Informationen zu WSH finden Sie im Abschnitt „WSH“ des Platform Software Development Kit (SDK). Wenn das Beispiel in eine Datei mit dem Namen WUA_SpecificUpdate.vbs kopiert wird, können Sie es ausführen, indem Sie ein Eingabeaufforderungsfenster öffnen und diesen Befehl eingeben: cscript WUA_SpecificUpdate.vbs
Hinweis
Wenn Sie Scans durchführen, können Sie eine höhere als die normale Speicherauslastung erfahren. Es wird empfohlen, erforderliche Anpassungen an Ihrem System vorzunehmen, um ausreichende Speicherressourcen für den Scanvorgang zuzuweisen. Dies kann das Konfigurieren zusätzlicher Prozessoren und das Ändern der Seitendatei umfassen. Die Sicherstellung einer angemessenen Speicherzuweisung hilft bei der effizienten und effektiven Durchführung des Scans.
Beispiel
Wichtig
Dieses Skript soll die Verwendung der Agent-APIs von Windows Update veranschaulichen und als Beispiel dafür dienen, wie Entwickler*innen diese APIs bei der Problembehandlung verwenden können. Dieses Skript ist nicht als Produktionscode vorgesehen. Es wird außerdem nicht von Microsoft unterstützt, obwohl die zugrunde liegenden Agent-APIs von Windows Update unterstützt werden.
Set updateSession = CreateObject("Microsoft.Update.Session")
updateSession.ClientApplicationID = "Sample Script"
'Get update title to search for
WScript.Echo "Enter the title of the update: " & _
"(for example, Update for Windows Rights Management client 1.0)"
updateTitle = WScript.StdIn.Readline
WScript.Echo vbCRLF & "Searching for: " & updateTitle & "..."
Set updateSearcher = updateSession.CreateupdateSearcher()
'Search for all software updates, already installed and not installed
Set searchResult = _
updateSearcher.Search("Type='Software'")
Set updateToInstall = CreateObject("Microsoft.Update.UpdateColl")
updateIsApplicable = False
'Cycle through search results to look for the update title
For i = 0 To searchResult.Updates.Count-1
Set update = searchResult.Updates.Item(i)
If UCase(update.Title) = UCase(updateTitle) Then
'Update in list of applicable updates
'Determine if it is already installed or not
If update.IsInstalled = False Then
WScript.Echo vbCRLF & _
"Result: Update applicable, not installed."
updateIsApplicable = True
updateToInstall.Add(update)
Else
'Update is installed so notify user and quit
WScript.Echo vbCRLF & _
"Result: Update applicable, already installed."
updateIsApplicable = True
WScript.Quit
End If
End If
Next
If updateIsApplicable = False Then
WScript.Echo "Result: Update is not applicable to this machine."
WScript.Quit
End If
WScript.Echo vbCRLF & "Would you like to install now? (Y/N)"
stdInput = WScript.StdIn.Readline
If (strInput = "N" or strInput = "n") Then
WScript.Quit
ElseIf (stdInput = "Y" OR stdInput = "y") Then
'Download update
Set downloader = updateSession.CreateUpdateDownloader()
downloader.Updates = updateToInstall
WScript.Echo vbCRLF & "Downloading..."
Set downloadResult = downloader.Download()
WScript.Echo "Download Result: " & downloadResult.ResultCode
'Install Update
Set installer = updateSession.CreateUpdateInstaller()
WScript.Echo vbCRLF & "Installing..."
installer.Updates = updateToInstall
Set installationResult = installer.Install()
'Output the result of the installation
WScript.Echo "Installation Result: " & _
installationResult.ResultCode
WScript.Echo "Reboot Required: " & _
installationResult.RebootRequired
End If