<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://znil.net/index.php?action=history&amp;feed=atom&amp;title=Windows_Update_per_Skript_suchen_herunterladen_installieren_reboot</id>
	<title>Windows Update per Skript suchen herunterladen installieren reboot - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://znil.net/index.php?action=history&amp;feed=atom&amp;title=Windows_Update_per_Skript_suchen_herunterladen_installieren_reboot"/>
	<link rel="alternate" type="text/html" href="https://znil.net/index.php?title=Windows_Update_per_Skript_suchen_herunterladen_installieren_reboot&amp;action=history"/>
	<updated>2026-04-20T16:24:50Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in znilwiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://znil.net/index.php?title=Windows_Update_per_Skript_suchen_herunterladen_installieren_reboot&amp;diff=11046&amp;oldid=prev</id>
		<title>BLinz: /* Angepasstes Skript */</title>
		<link rel="alternate" type="text/html" href="https://znil.net/index.php?title=Windows_Update_per_Skript_suchen_herunterladen_installieren_reboot&amp;diff=11046&amp;oldid=prev"/>
		<updated>2018-10-23T14:28:25Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Angepasstes Skript&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Ein Kunde hatte auf die schnelle ein Script gebraucht das auf einigen Windows-Rechner mit manuellen Windows-Updates eben diese einspielt.&amp;lt;br&amp;gt;&lt;br /&gt;
Fündig wurde ich unter&amp;lt;br&amp;gt;&lt;br /&gt;
 https://docs.microsoft.com/de-de/windows/desktop/Wua_Sdk/searching--downloading--and-installing-updates&lt;br /&gt;
Da ist ein schönes VB-Script was all die Anforderungen erfüllt.&amp;lt;br&amp;gt;&lt;br /&gt;
Ich habe es so angepasst das es automatisch durchläuft (inklusive reboot), gestartet wird es über eine Batchdatei.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
==Angepasstes Skript==&lt;br /&gt;
Das Original findet Ihr unter &lt;br /&gt;
 https://docs.microsoft.com/de-de/windows/desktop/Wua_Sdk/searching--downloading--and-installing-updates&lt;br /&gt;
Das Skript heißt&amp;lt;br&amp;gt;&lt;br /&gt;
 WindowsUpdate.vbs&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
Set updateSession = CreateObject(&amp;quot;Microsoft.Update.Session&amp;quot;)&lt;br /&gt;
updateSession.ClientApplicationID = &amp;quot;MSDN Sample Script&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Set updateSearcher = updateSession.CreateUpdateSearcher()&lt;br /&gt;
&lt;br /&gt;
WScript.Echo &amp;quot;Searching for updates...&amp;quot; &amp;amp; vbCRLF&lt;br /&gt;
&lt;br /&gt;
Set searchResult = _&lt;br /&gt;
updateSearcher.Search(&amp;quot;IsInstalled=0 and Type=&amp;#039;Software&amp;#039; and IsHidden=0&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
WScript.Echo &amp;quot;List of applicable items on the machine:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
For I = 0 To searchResult.Updates.Count-1&lt;br /&gt;
    Set update = searchResult.Updates.Item(I)&lt;br /&gt;
    WScript.Echo I + 1 &amp;amp; &amp;quot;&amp;gt; &amp;quot; &amp;amp; update.Title&lt;br /&gt;
Next&lt;br /&gt;
&lt;br /&gt;
If searchResult.Updates.Count = 0 Then&lt;br /&gt;
    WScript.Echo &amp;quot;There are no applicable updates.&amp;quot;&lt;br /&gt;
    WScript.Quit&lt;br /&gt;
End If&lt;br /&gt;
&lt;br /&gt;
WScript.Echo vbCRLF &amp;amp; &amp;quot;Creating collection of updates to download:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Set updatesToDownload = CreateObject(&amp;quot;Microsoft.Update.UpdateColl&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
For I = 0 to searchResult.Updates.Count-1&lt;br /&gt;
    Set update = searchResult.Updates.Item(I)&lt;br /&gt;
    addThisUpdate = false&lt;br /&gt;
    If update.InstallationBehavior.CanRequestUserInput = true Then&lt;br /&gt;
        WScript.Echo I + 1 &amp;amp; &amp;quot;&amp;gt; skipping: &amp;quot; &amp;amp; update.Title &amp;amp; _&lt;br /&gt;
        &amp;quot; because it requires user input&amp;quot;&lt;br /&gt;
    Else&lt;br /&gt;
        If update.EulaAccepted = false Then&lt;br /&gt;
            WScript.Echo I + 1 &amp;amp; &amp;quot;&amp;gt; note: &amp;quot; &amp;amp; update.Title &amp;amp; _&lt;br /&gt;
            &amp;quot; has a license agreement that must be accepted:&amp;quot;&lt;br /&gt;
            WScript.Echo update.EulaText&lt;br /&gt;
            WScript.Echo &amp;quot;Do you accept this license agreement? (Y/N)&amp;quot;&lt;br /&gt;
            &amp;#039; Abfrage wird übersprungen und Wert manuell gesetzt&lt;br /&gt;
            &amp;#039;strInput = WScript.StdIn.Readline&lt;br /&gt;
            strInput = &amp;quot;Y&amp;quot;&lt;br /&gt;
            WScript.Echo &lt;br /&gt;
            If (strInput = &amp;quot;Y&amp;quot; or strInput = &amp;quot;y&amp;quot;) Then&lt;br /&gt;
                update.AcceptEula()&lt;br /&gt;
                addThisUpdate = true&lt;br /&gt;
            Else&lt;br /&gt;
                WScript.Echo I + 1 &amp;amp; &amp;quot;&amp;gt; skipping: &amp;quot; &amp;amp; update.Title &amp;amp; _&lt;br /&gt;
                &amp;quot; because the license agreement was declined&amp;quot;&lt;br /&gt;
            End If&lt;br /&gt;
        Else&lt;br /&gt;
            addThisUpdate = true&lt;br /&gt;
        End If&lt;br /&gt;
    End If&lt;br /&gt;
    If addThisUpdate = true Then&lt;br /&gt;
        WScript.Echo I + 1 &amp;amp; &amp;quot;&amp;gt; adding: &amp;quot; &amp;amp; update.Title &lt;br /&gt;
        updatesToDownload.Add(update)&lt;br /&gt;
    End If&lt;br /&gt;
Next&lt;br /&gt;
&lt;br /&gt;
If updatesToDownload.Count = 0 Then&lt;br /&gt;
    WScript.Echo &amp;quot;All applicable updates were skipped.&amp;quot;&lt;br /&gt;
    WScript.Quit&lt;br /&gt;
End If&lt;br /&gt;
    &lt;br /&gt;
WScript.Echo vbCRLF &amp;amp; &amp;quot;Downloading updates...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Set downloader = updateSession.CreateUpdateDownloader() &lt;br /&gt;
downloader.Updates = updatesToDownload&lt;br /&gt;
downloader.Download()&lt;br /&gt;
&lt;br /&gt;
Set updatesToInstall = CreateObject(&amp;quot;Microsoft.Update.UpdateColl&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
rebootMayBeRequired = false&lt;br /&gt;
&lt;br /&gt;
WScript.Echo vbCRLF &amp;amp; &amp;quot;Successfully downloaded updates:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
For I = 0 To searchResult.Updates.Count-1&lt;br /&gt;
    set update = searchResult.Updates.Item(I)&lt;br /&gt;
    If update.IsDownloaded = true Then&lt;br /&gt;
        WScript.Echo I + 1 &amp;amp; &amp;quot;&amp;gt; &amp;quot; &amp;amp; update.Title &lt;br /&gt;
        updatesToInstall.Add(update) &lt;br /&gt;
        If update.InstallationBehavior.RebootBehavior &amp;gt; 0 Then&lt;br /&gt;
            rebootMayBeRequired = true&lt;br /&gt;
        End If&lt;br /&gt;
    End If&lt;br /&gt;
Next&lt;br /&gt;
&lt;br /&gt;
If updatesToInstall.Count = 0 Then&lt;br /&gt;
    WScript.Echo &amp;quot;No updates were successfully downloaded.&amp;quot;&lt;br /&gt;
    WScript.Quit&lt;br /&gt;
End If&lt;br /&gt;
&lt;br /&gt;
If rebootMayBeRequired = true Then&lt;br /&gt;
    WScript.Echo vbCRLF &amp;amp; &amp;quot;These updates may require a reboot.&amp;quot;&lt;br /&gt;
End If&lt;br /&gt;
&lt;br /&gt;
WScript.Echo  vbCRLF &amp;amp; &amp;quot;Would you like to install updates now? (Y/N)&amp;quot;&lt;br /&gt;
&amp;#039; Abfrage wird übersprungen und Wert manuell gesetzt&lt;br /&gt;
&amp;#039;strInput = WScript.StdIn.Readline&lt;br /&gt;
strInput = &amp;quot;Y&amp;quot;&lt;br /&gt;
WScript.Echo &lt;br /&gt;
&lt;br /&gt;
If (strInput = &amp;quot;Y&amp;quot; or strInput = &amp;quot;y&amp;quot;) Then&lt;br /&gt;
    WScript.Echo &amp;quot;Installing updates...&amp;quot;&lt;br /&gt;
    Set installer = updateSession.CreateUpdateInstaller()&lt;br /&gt;
    installer.Updates = updatesToInstall&lt;br /&gt;
    Set installationResult = installer.Install()&lt;br /&gt;
 &lt;br /&gt;
    &amp;#039;Output results of install&lt;br /&gt;
    WScript.Echo &amp;quot;Installation Result: &amp;quot; &amp;amp; _&lt;br /&gt;
    installationResult.ResultCode &lt;br /&gt;
    WScript.Echo &amp;quot;Reboot Required: &amp;quot; &amp;amp; _ &lt;br /&gt;
    installationResult.RebootRequired &amp;amp; vbCRLF &lt;br /&gt;
    WScript.Echo &amp;quot;Listing of updates installed &amp;quot; &amp;amp; _&lt;br /&gt;
    &amp;quot;and individual installation results:&amp;quot; &lt;br /&gt;
 &lt;br /&gt;
    For I = 0 to updatesToInstall.Count - 1&lt;br /&gt;
        WScript.Echo I + 1 &amp;amp; &amp;quot;&amp;gt; &amp;quot; &amp;amp; _&lt;br /&gt;
        updatesToInstall.Item(i).Title &amp;amp; _&lt;br /&gt;
        &amp;quot;: &amp;quot; &amp;amp; installationResult.GetUpdateResult(i).ResultCode   &lt;br /&gt;
    Next&lt;br /&gt;
End If&lt;br /&gt;
&lt;br /&gt;
&amp;#039;Reboot ergänzt!&lt;br /&gt;
If rebootMayBeRequired = true Then&lt;br /&gt;
    WScript.Echo vbCRLF &amp;amp; &amp;quot;Start Reboot ...&amp;quot;&lt;br /&gt;
	Set WSHShell = WScript.CreateObject(&amp;quot;WScript.Shell&amp;quot;)&lt;br /&gt;
	WshShell.Run &amp;quot;C:\WINDOWS\system32\shutdown.exe -r -t 120&amp;quot;&lt;br /&gt;
End If&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ich habe alle Nachfragen nach Y/N auskommentiert und die Variable manuell auf Y gesetzt.&amp;lt;br&amp;gt;&lt;br /&gt;
Außerdem habe ich am Ende den Reboot angehängt.&amp;lt;br&amp;gt;&lt;br /&gt;
Den Reboot könnte man manuell noch mit&amp;lt;br&amp;gt;&lt;br /&gt;
 shutdown /a&lt;br /&gt;
abbrechen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Ausführen==&lt;br /&gt;
Wenn Ihr das &amp;lt;code&amp;gt;WindowsUpdate.vbs&amp;lt;/code&amp;gt; per Doppelklick startet wird es mit &amp;lt;code&amp;gt;wscript.exe&amp;lt;/code&amp;gt; geöffnet und produziert Popup-Fenster.&amp;lt;br&amp;gt;&lt;br /&gt;
Es ist dafür gedacht über &amp;lt;code&amp;gt;cscript.exe&amp;lt;/code&amp;gt; gestartet zu werden.&amp;lt;br&amp;gt;&lt;br /&gt;
 c:\Windows\System32\cscript.exe WindowsUpdate.vbs&lt;br /&gt;
Nachfolgend ein kleines Skript was ich zusammen mit dem VBS-Skript einfach in einer Freigabe hinterlegt habe.&amp;lt;br&amp;gt;&lt;br /&gt;
Das Skript heißt&amp;lt;br&amp;gt;&lt;br /&gt;
 WindowsUpdate.cmd&lt;br /&gt;
und hat folgenden Inhalt:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;dos&amp;quot;&amp;gt;&lt;br /&gt;
@echo off&lt;br /&gt;
start c:\Windows\System32\cscript.exe \\SERVER\FREIGABE\ORDNER\WindowsUpdate.vbs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;comments /&amp;gt;&lt;/div&gt;</summary>
		<author><name>BLinz</name></author>
	</entry>
</feed>