derwowusste
Goto Top

Automatisiertes Updating eines frisch installierten PCs mit WUinstall und WSUS

Eine fast jedem Admin bekannte Unschönheit: ein frisch installierter PC muss erst mehrere Male neu starten, bis Windowsupdate keine Updates mehr anbietet und der Rechner als updatetechnisch auslieferungswürdig gelten kann.

Mit WUInstall kann man den Updatesuch- und Installationsvorgang anstoßen. Ich beschreibe hier das noch wenig bekannte WUInstall und liefere ein Skript, um es weiter zu automatisieren, so dass man das Skript einmalig startet und sich danach nicht mehr darum kümmern muss.

Zunächst läd man von https://web.archive.org/web/20151227002916/http://www.hs2n.at/component/ ... die Freeware WUInstall 1.1 nach \\server\share\wuinstall runter. Wuinstall ist ausdrücklich auch kommerziell legal in dieser Version kostenlos verwendbar.
Dann erstellt man auf dem zu aktualisierenden Client einen Task (Konto:system), der den WSUS beim Systemstart nach Updates durchsucht und diese installiert.

Er startet den PC danach (ggf. mehrfach) automatisch neu und sucht erneut so lange, bis nichts mehr zu finden ist, dann löscht sich der Task selbst.

Ich stelle hier aus
A eine Batch, die das Ganze anlegt und erstmalig startet
B die .reg-Datei, die die WSUS-Einstellungen setzt
C den Task, als xml-Datei exportiert
D die eigentliche Batch, die WUInstall ansteuert und nach Erledigung aller Aufgaben den Task wieder löscht


A: setup.bat
copy \\server\share\wuinstall\set_wsus.reg %windir%\temp\
copy \\server\share\wuninstall\wuinstall.exe %windir%\temp\
regedit /s %windir%\temp\set_wsus.reg
net stop wuauserv & net start wuauserv
schtasks /create /XML \\server\share\wuinstall\WUInstall.xml /tn WUInstall
copy \\server\share\wuinstall\wuinstall_Basic.bat %windir%\temp\
schtasks /run /tn WUInstall

B: set_wsus.reg
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate]
"WUServer"="http://EuerWSUS"  
"WUStatusServer"="http://EuerWSUS"  

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU]
"UseWUServer"=dword:00000001  

C:WUInstall.xml
<?xml version="1.0" encoding="UTF-16"?>  
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">  
  <RegistrationInfo>
    <Date>2011-07-27T15:02:16.6275347</Date>
    <Author>Netbiosdomänenname\EuerKonto</Author>
  </RegistrationInfo>
  <Triggers>
    <BootTrigger>
      <Enabled>true</Enabled>
    </BootTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">  
      <UserId>SYSTEM</UserId>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <IdleSettings>
      <Duration>PT10M</Duration>
      <WaitTimeout>PT1H</WaitTimeout>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>P3D</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">  
    <Exec>
      <Command>%windir%\temp\wuinstall_Basic.bat</Command>
    </Exec>
  </Actions>
</Task>

D:wuinstall_Basic.bat
%windir%\temp\wuinstall /install
if %errorlevel% EQU 10 shutdown -f -r -t 00
if %errorlevel% EQU 2 schtasks /delete /tn WUInstall /f

PS: wuinstall bietet noch weitere Kommandozeilenoptionen
PS2: auch die Bordversion wuauclt /detectnow und danach wuauclt /UpdateNow leistet Ähnliches, jedoch lässt diese sich nicht so einfach skripten. Wer es damit geschafft hat, kann es ja gerne anfügen.
PS3: getestet auf Vista. Auf xp muss der Task anders angelegt werden, da xp den Schalter /xml noch nicht kennt.

Content-ID: 170583

Url: https://administrator.de/contentid/170583

Ausgedruckt am: 22.11.2024 um 20:11 Uhr

builder4242
builder4242 28.07.2011 um 21:31:02 Uhr
Goto Top
Hallo,


brauche ich dazu eine Domänen mit Server WSUS Dienst, oder läuft das standalone mit den Servern von MS?

nettes script
DerWoWusste
DerWoWusste 28.07.2011 um 21:37:58 Uhr
Goto Top
IN der Doku steht, er kann auch Windows Update ansteuern. Eine Domäne wird in keinem Fall gebraucht.
Deepsys
Deepsys 24.08.2011 um 15:04:12 Uhr
Goto Top
Hallo DerWoWusste,

vielen, vielen Dank für die guten Skripten, das hat mir gefehlt!!

Ich habe noch ein paar Änderungen, und vielleicht auch für andere interessant:

Den Tasks unter XP einrichten (setup.bat):
.....
rem Aufgabe erzeugen
schtasks /create /RU System /SC BEIMSTART /TN WUinstall /TR c:\programme\WUinstall\wuinstall_Basic.bat
.....

Damit man bzw. andere auch sehen das der Rechner gerade noch Updates installiert, habe ich dem Rechner noch einen Logon-Text vor dem Anmelden (aber nach Strg+Alt+Entf, geht das auch davor?):
(X ist ein Netzlaufwerk)

setup.bat:
.....
rem Logon-Meldung eintragen
regedit /s X:\scripts\data\WUinstall\WinLogon_Message01.reg
.....

WinLogon_Message01.reg:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]

"LegalNoticeCaption"="Update Installation läuft!!"  
"LegalNoticeText"="Es werden zur Zeit die automatischen Updates installiert, der Rechner kann jederzeit neustarten!! Bitte warten bis diese Meldung den Abschluss der Update mitteilt."  

Die wuinstall_Basic.bat habe ich auch noch etwas erweitert:
- Ich habe mir eine Log-Datei angelegt, damit ich auch während der Installation remote sehen kann, was WUinstall gerade macht (ja, ich mag Logs face-smile )
- Ich hatte Probleme bei einigen Rechnern, da startete der Rechner nicht neu: Der Rückgabecode war in den Fällen 11 (SuccededWithErrors), diesen schreibe ich mir auch in den Log-Datei
- Auch bei Rückgabewerte 11 wird der Rechner einfach neu gestartet, der WSUS kriegt das schon hin
- Wenn keine Updates mehr anstehen, wird die Logon-Meldung gelöscht, ein Auto-Logon aktiviert (hier werden noch Triber per RunOnce installiert) und dann der Rechner noch mal neu gestartet:

wuinstall_Basic.bat
@echo off

set LogDatei=c:\programme\WUinstall\wuinstall_log.txt

rem WUinstall starten und in Logdateischreiben
c:\programme\WUinstall\wuinstall.exe /install >> %LogDatei%

rem Rückgabewert ausgeben
echo. >> %LogDatei%
echo ------ >> %LogDatei%
echo Rueckgabewert: >> %LogDatei%
echo %errorlevel% >> %LogDatei%
echo ------------------------------- >> %LogDatei%

rem Neustarten oder Fertig?
if %errorlevel% EQU 10 C:\Windows\system32\shutdown -f -r -c "Windows Updates: Neustart ..." -t 5  
if %errorlevel% EQU 11 C:\Windows\system32\shutdown -f -r -c "Windows Updates: Fehler! Neustart ..." -t 5  
if %errorlevel% EQU 2 c:\programme\WUinstall\wuinstall_Fertig.cmd

wuinstall_Fertig.cmd
@echo off

rem Aufgabe löschen
schtasks /delete /tn WUInstall /f 

rem Logon Meldung löschen
regedit /s C:\Programme\WUinstall\WinLogon_No_Message.reg

rem Auto-Logon aktivieren
regedit /s C:\Programme\WUinstall\AutoLogon_On.reg

rem RunOnce Treiber-Installation
regedit /s C:\Programme\WUinstall\Treiber_Install.reg

rem PC neustarten
C:\Windows\system32\shutdown -f -r -c "Updates sind installiert. Letzter Neustart ..." -t 10  

WinLogon_No_Message.reg:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]

"LegalNoticeCaption"=""  
"LegalNoticeText"=""  

AutoLogon_On.reg:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]

"DefaultUserName"="Administrator"  
"AutoAdminLogon"="1"  
"DefaultPassword"="passwort"  

Treiber_Install.reg:

Wichtig ist hier das der Auto-Logon wieder deaktiviert und die Datei mit den Anmeldedaten gelöscht wird (wenn kein Netzlaufwerk verwendet wird)

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Associations]
"DefaultFileTypeRisk"=dword:00006151  
"LowRiskFileTypes"=".exe"  

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess]
"Start"=dword:00000003  

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wscsvc]
"Start"=dword:00000003  

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx]
"TITLE"="Treiber Installation"  

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\005]
@="AutoLogon deaktivieren"  
"1"="regedit /s C:\\Programme\\WUinstall\\AutoLogon_Off.reg"  
"2"="cmd /c del /q C:\\Programme\\WUinstall\\AutoLogon_On.reg"  

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\010]
@="Treiber Installation"  
"1"="C:\\Programme\\WUinstall\\Treiber_Install_01.cmd"  

AutoLogon_Off.reg:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]

"DefaultUserName"="Administrator"  
"AutoAdminLogon"="0"  
"DefaultPassword"=  

VG
Deepsys
dukemaster
dukemaster 12.09.2011 um 11:25:58 Uhr
Goto Top
Hallo,

sehr gute Anleitung, vielen Dank dafür.

Eine Frage an euch: Wo muss was eingetragen werden, wenn man keinen WSUS Server hat und die Updates von MS-Server ziehen möchte/muss? In meinem Fall geht es um Windows 7 x86 und x64 Systeme.
Vielen Dank für das Antworten und einen schönen Tag.

gruß Matze
DerWoWusste
DerWoWusste 12.09.2011 um 11:49:16 Uhr
Goto Top
Die WSUS-Eintragung weglassen. Regfile also weglassen und aus A Zeile 3 und 4.
beta-way-of-life
beta-way-of-life 20.09.2011 um 12:44:10 Uhr
Goto Top
Hallo Leute!

Erstmal danke für dieses Tolle Script! face-smile

Leider will es bei mir absolut nicht funktionieren..... irgendwas mach ich falsch.
Ich komm nur nicht dahinter was.

Leider lässt sich bei mir der Task nicht ausführen....

Hier der Code: (Alle Dateien liegen am Desktop unter Update)

In der start.bat sollte der Task erzeugt werden:

schtasks /create /XML %userprofile%\Desktop\Update\wuinstall.xml /tn wuinstall

Code starten:

schtasks /run /tn wuinstall

wuinstall.xml

<?xml version="1.0" encoding="UTF-16"?>  
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">  
  <RegistrationInfo>
    <Date>2011-07-27T15:02:16.6275347</Date>
    <Author>domain\user</Author>
  </RegistrationInfo>
  <Triggers>
    <BootTrigger>
      <Enabled>true</Enabled>
    </BootTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">  
      <UserId>SYSTEM</UserId>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <IdleSettings>
      <Duration>PT10M</Duration>
      <WaitTimeout>PT1H</WaitTimeout>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>P3D</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">  
    <Exec>
      <Command>%userprofile%\Desktop\Update\wuinstall_basic.bat</Command>
    </Exec>
  </Actions>
</Task>

Das ganze sieht dann im Taskplaner so aus:

http://www8.pic-upload.de/20.09.11/sfrt5ujectls.jpg
http://www8.pic-upload.de/20.09.11/6su5pecava6.jpg

Wenn es dann funktioniert poste ich den fertigen Code....
Ist nochmal etwas abgeändert. ;)

Ich hoffe mir kann jemand helfen.

Danke.

mfG
Joe
Deepsys
Deepsys 20.09.2011 um 12:56:40 Uhr
Goto Top
Hi,

tja, wenn der Task beim Systemstart (also VOR der User Anmeldung), darf das wuinstall_basic.bat nicht auf dem Desktop des Users %userprofile% liegen, denn den gibt es in dem Moment gar nicht!

Also, bitte in temp oder irgendwas festes face-smile

Auch wird laut deinem Bild die wuinstall.xml ausgeführt ...

VG
Deepsys
beta-way-of-life
beta-way-of-life 20.09.2011 um 13:01:03 Uhr
Goto Top
Zitat von @Deepsys:
Hi,

tja, wenn der Task beim Systemstart (also VOR der User Anmeldung), darf das wuinstall_basic.bat nicht auf dem Desktop des Users
%userprofile% liegen, denn den gibt es in dem Moment gar nicht!

Also, bitte in temp oder irgendwas festes face-smile

Auch wird laut deinem Bild die wuinstall.xml ausgeführt ...

VG
Deepsys


Hi,

ok gut, daran hab ich nicht gedacht. Aber am Problem änderts nichts.
Den ich versuch den Task ja zu testen während ich angemeldet bin.

Auch ist mir nicht klar warum eben die wuinstall.xml ausgeführt wird und nicht die wuinstall_basic.bat
Auch versteh ich nicht wieso der Task WUinstall heißt (großes WU), das hab ich ja nirgendwo festgelegt?

Ich komm wirklich nicht weiter. xD

mfG
Joe
Deepsys
Deepsys 20.09.2011 um 13:08:45 Uhr
Goto Top
Ähm, doofe Frage: du machst das aber unter Vista oder 7?

Der Name des Tasks wird beim Aufrufen festgelegt:
/tn WUinstall

VG
Deepsys
beta-way-of-life
beta-way-of-life 20.09.2011 um 13:11:10 Uhr
Goto Top
Zitat von @Deepsys:
Ähm, doofe Frage: du machst das aber unter Vista oder 7?

Der Name des Tasks wird beim Aufrufen festgelegt:
/tn WUinstall

VG
Deepsys

Sry, hab ich vergessen hinzuschreiben in meinem Zorn. :D

W7 x86

Ja, ich habe aber /tn wuinstall eingetragen. oO
Deshalb bin ich ja so verwirrt.

mfg
Deepsys
Deepsys 20.09.2011 um 13:21:15 Uhr
Goto Top
Hi,

also ich habe das gerade mal getestet (w7 x64) und alles klappt wie es sollte:

C:\Windows\system32>schtasks /create /XML C:\TEMP\wuinstall.xml /tn wuinstall.xml
ERFOLGREICH: Die geplante Aufgabe "wuinstall" wurde erfolgreich erstellt.

Der Task heißt "wuinstall" und will die wuinstall_basic.bat ausführen

Das Ganze muss wohl unter dem Administrator eingegeben werden!

Es gibt den Tasks aber nach deinen Versuchen nicht mehrfach?
Was Besseres fällt mir im Moment auch nicht ein ...

VG
Deepsys
beta-way-of-life
beta-way-of-life 20.09.2011 um 14:15:04 Uhr
Goto Top
Hi,

also der Task wird jetzt angelegt aber das ausführen funktioniert nicht....
Ich hab dir das ganze mal PN geschickt.

mfG

EDIT:

So das ganze funktioniert jetzt.....
Lag an meinem PC.....
Auf nem frisch aufgesetzten funktionierts wunderbar....

Hier noch das fertige Script mit Auswahl XP oder Win 7.
Alles andere wurde vom TE und vom Deepsys übernommen.

Script gibts hier:

http://ul.to/2chn2kxq

mfG
Joe
AndreasW63
AndreasW63 21.11.2011 um 16:17:01 Uhr
Goto Top
Hallo,

leider scheint der Link zum Download des Scripts nicht mehr zu existieren.
Gibt es noch eine andere Quelle, oder kann mir jemand das/die Scripte mailen ?

mfg
Andreas
beta-way-of-life
beta-way-of-life 23.11.2011 um 14:40:43 Uhr
Goto Top
Zitat von @AndreasW63:
Hallo,

leider scheint der Link zum Download des Scripts nicht mehr zu existieren.
Gibt es noch eine andere Quelle, oder kann mir jemand das/die Scripte mailen ?

mfg
Andreas

Hallo,

hier der neue Link:

http://ul.to/rsfy9rjw

Das ganze funktioniert leider nicht immer richtig....
Vielleicht findet wer den Fehler.... Dann besser ich es aus.

lg Joe
Belloci
Belloci 19.10.2012 um 14:02:17 Uhr
Goto Top
Hey,

bin nun deinen schritten gefolgt und habe auch nur positives feedback in der cmd bekommen. In der aufgabenplanung sehe ich den task auch aber er installiert nicht automatisch und fährt auch nicht automatisch runter... wie gesagt, alle dateien wurden ins temp verzeichnis kopiert und sehe sie auch da liegen... hmmm

OS ist Win7 x86
DerWoWusste
DerWoWusste 19.10.2012 um 14:10:50 Uhr
Goto Top
Es ist doch kein Problem zu sehen, wo es hakt. Der Task führt ein Skript aus - führ es doch einfach mal manuell aus.
Auch solltest Du klar stellen, ob Du mein Skript oder das angepasste genommen hast.
Belloci
Belloci 19.10.2012 um 15:00:39 Uhr
Goto Top
hmm habe das skript von deinem ursprungsbeitrag genommen... werde es gleich mal manuell ausführen... danke erstmal
Belloci
Belloci 19.10.2012 um 15:05:43 Uhr
Goto Top
Zitat von @DerWoWusste:
Es ist doch kein Problem zu sehen, wo es hakt. Der Task führt ein Skript aus - führ es doch einfach mal manuell aus.
Auch solltest Du klar stellen, ob Du mein Skript oder das angepasste genommen hast.


Soo... er sagt, dass des er nicht nach updates suchen kann... "search failed", warum auch immer aber wird wohl an einer einstellung meinerseits liegen!
DerWoWusste
DerWoWusste 19.10.2012 um 15:07:53 Uhr
Goto Top
WSUS im Regfile evtl. vergessen anzupassen?
Belloci
Belloci 19.10.2012 um 15:31:58 Uhr
Goto Top
Hey, danke für deine Unterstützung... regfile habe ich angepasst, da ich die rechner updaten will ohne in die domäne zu bringen, kann er mit dem namen des servers nichts anfangen face-smile

regfile angepasst und die ip des wds eingetragen - schwupps es geht!

Dankeschön!!