:::::::::::::::::::::::::::::::::::::::::::: :: forceWSUS.cmd :: Wolfgang Führer :: 12.12.2007 :::::::::::::::::::::::::::::::::::::::::::: @echo off color 71 :: hier bitte variablen des WSUS Servers definieren! set SERVER=servername set PORT=portnummer call :maketime & title WSUS Integration - Start %zeit% echo WSUS Integration echo ---------------- echo. :: Zuerst wird der WSUS Client installiert call :maketime & echo %zeit% Installiere WSUS Client ... start /wait WindowsUpdateAgent30-x86.exe /wuforce /quiet ping 127.0.0.1 -n 30 >nul call :maketime & echo %zeit% Installiere Pakethelfer ... start /wait WindowsXP-KB898461-x86-ENU.exe /quiet /passive ping 127.0.0.1 -n 30 >nul call :maketime & echo %zeit% Schreibe Registry für Client ... SET KEY=HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate :: User k”nnen Info-Balloons sehen REG ADD "%KEY%" /v "ElevateNonAdmins" /t REG_DWORD /d 1 /f >nul :: greift nur wenn in WSUS eingeschaltet REG ADD "%KEY%" /v "TargetGroup" /t REG_SZ /d "XP" /f >nul :: greift nur wenn in WSUS eingeschaltet REG ADD "%KEY%" /v "TargetGroupEnabled" /t REG_DWORD /d 1 /f >nul :: WSUS Server mit Port REG ADD "%KEY%" /v "WUServer" /t REG_SZ /d "http://%SERVER%:%PORT%" /f >nul :: WSUS Server mit Port REG ADD "%KEY%" /v "WUStatusServer" /t REG_SZ /d "http://%SERVER%:%PORT%" /f >nul SET KEY=HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate\AU :: 4 = automatisch herunterladen und installieren REG ADD "%KEY%" /v "AUOptions" /t REG_DWORD /d 4 /f >nul REG ADD "%KEY%" /v "AUPowerManagement" /t REG_DWORD /d 0 /f >nul REG ADD "%KEY%" /v "AutoInstallMinorUpdates" /t REG_DWORD /d 1 /f >nul :: 12 = jede Stunde REG ADD "%KEY%" /v "DetectionFrequency" /t REG_DWORD /d 12 /f >nul :: 1 = eingeschaltet REG ADD "%KEY%" /v "DetectionFrequencyEnabled" /t REG_DWORD /d 1 /f >nul REG ADD "%KEY%" /v "DetectionStartTime" /t REG_SZ /d "-" /f >nul REG ADD "%KEY%" /v "IncludeRecommendedUpdates" /t REG_DWORD /d 1 /f >nul REG ADD "%KEY%" /v "LastWaitTimeout" /t REG_SZ /d "-" /f >nul :: 0 = Autoreboot 1 = vor Reboot fragen REG ADD "%KEY%" /v "NoAutoRebootWithLoggedOnUsers" /t REG_DWORD /d 0 /f >nul :: 0 = Automatisch updaten einschalten REG ADD "%KEY%" /v "NoAutoUpdate" /t REG_DWORD /d 0 /f >nul REG ADD "%KEY%" /v "RebootRelaunchTimeout" /t REG_DWORD /d 2 /f >nul REG ADD "%KEY%" /v "RebootRelaunchTimeoutEnabled" /t REG_DWORD /d 1 /f >nul REG ADD "%KEY%" /v "RebootWarningTimeout" /t REG_DWORD /d 1 /f >nul REG ADD "%KEY%" /v "RebootWarningTimeoutEnabled" /t REG_DWORD /d 1 /f >nul REG ADD "%KEY%" /v "RescheduleWaitTime" /t REG_DWORD /d 1 /f >nul REG ADD "%KEY%" /v "RescheduleWaitTimeEnabled" /t REG_DWORD /d 1 /f >nul :: 0 = jeden Tag REG ADD "%KEY%" /v "ScheduledInstallDay" /t REG_DWORD /d 0 /f >nul :: n„chste Installzeit auf 0 Uhr REG ADD "%KEY%" /v "ScheduledInstallTime" /t REG_DWORD /d 0 /f >nul :: 1 = WSUS benutzen REG ADD "%KEY%" /v "UseWUServer" /t REG_DWORD /d 1 /f >nul call :maketime & echo %zeit% Melde Client an WSUS an ... start /wait wuauclt.exe /resetauthorization /detectnow ping 127.0.0.1 -n 180 >nul call :maketime & echo %zeit% Report an WSUS schicken ... start /wait wuauclt.exe /r ping 127.0.0.1 -n 60 >nul :: Soweit die Installation des WSUS Client :: Jetzt beschleunigen wir die Sache set x=0 :loop set /a x="x+1" echo Loop %x%/5 call :maketime & echo %zeit% Setze Registry für sofortigen Download von Patchen ... SET KEY=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update REG ADD "%KEY%" /v "ResetAU" /t REG_DWORD /d 1 /f >nul REG ADD "%KEY%" /v "ConfigVer" /t REG_DWORD /d 1 /f >nul REG ADD "%KEY%" /v "NextDetectionTime" /t REG_SZ /d "2006-01-01 00:00:00" /f >nul :: Dieser Wert ist wichtig damit Installation sofort startet REG ADD "%KEY%" /v "ScheduledInstallDate" /t REG_SZ /d "2006-01-01 00:00:00" /f >nul call :maketime & echo %zeit% Starte WSUS Service durch ... start /wait net stop wuauserv start /wait net start wuauserv call :maketime & echo %zeit% 5 Minuten Pause für Downloads ... :: Je nach Netz anpassen. :: 500 MB (ca. 80 Patche) bei 100Mbit sind ca. 1 Minute ping 127.0.0.1 -n 300 >nul echo ........ Nun sollten die Patche heruntergeladen sein. echo ........ -^> C:\Windows\SoftwareDistribution\Download\ call :maketime & echo %zeit% Setze Registry fr sofortige Installation ... SET KEY=HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate\AU :: 1. Block kann wegfallen wenn oben gesetzt :: 4 = automatisch herunterladen und installieren REG ADD "%KEY%" /v "AUOptions" /t REG_DWORD /d 4 /f >nul REG ADD "%KEY%" /v "RebootWarningTimeout" /t REG_DWORD /d 1 /f >nul REG ADD "%KEY%" /v "RebootWarningTimeoutEnabled" /t REG_DWORD /d 1 /f >nul :: 0 = Autoreboot 1 = vor Reboot fragen REG ADD "%KEY%" /v "NoAutoRebootWithLoggedOnUsers" /t REG_DWORD /d 0 /f >nul SET KEY=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update REG ADD "%KEY%" /v "ResetAU" /t REG_DWORD /d 1 /f >nul REG ADD "%KEY%" /v "ConfigVer" /t REG_DWORD /d 1 /f >nul REG ADD "%KEY%" /v "NextDetectionTime" /t REG_SZ /d "2006-01-01 00:00:00" /f >nul :: Dieser Wert ist wichtig damit Installation sofort startet REG ADD "%KEY%" /v "ScheduledInstallDate" /t REG_SZ /d "2006-01-01 00:00:00" /f >nul SET KEY=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\Results\Detect REG ADD "%KEY%" /v "LastSuccessTime" /t REG_SZ /d "2006-01-01 00:00:00" /f >nul REG ADD "%KEY%" /v "LastError" /t REG_DWORD /d 0 /f >nul SET KEY=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\Results\Download REG ADD "%KEY%" /v "LastSuccessTime" /t REG_SZ /d "2006-01-01 00:00:00" /f >nul REG ADD "%KEY%" /v "LastError" /t REG_DWORD /d 0 /f >nul SET KEY=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\Results\Install REG ADD "%KEY%" /v "LastSuccessTime" /t REG_SZ /d "2006-01-01 00:00:00" /f >nul REG ADD "%KEY%" /v "LastError" /t REG_DWORD /d 0 /f >nul call :maketime & echo %zeit% Starte WSUS Service durch ... start /wait net stop wuauserv start /wait net start wuauserv echo. echo --------------------------------------------- echo Nun sollten die Patche installiert werden ... echo --------------------------------------------- start /wait taskkill /im ShowUpdates.exe ping 127.0.0.1 >nul start ShowUpdates.exe echo. :: falls die zeiten zu kurz waren nach 15 min erneute schleife :: reboot nach patchinstallation beendet schleife ping 127.0.0.1 -n 900 >nul if %x% LSS 5 goto loop :: abbruch nach 5 versuchen echo Es wurden keine Patche installiert! echo. pause ::ohne reboot könnte man so beenden: ::echo Nach einem Tastendruck wird erneut ein Report an WSUS geschickt ... ::pause ::call :maketime & echo %zeit% Report erneut an WSUS schicken ... ::start /wait wuauclt.exe /r exit :maketime :: ordentlichen zeitstempel generieren :: geht bei deutschem und englischem windows if "%date:~6,1%"=="/" ( set y=%date:~12,2% set m=%date:~4,2% set d=%date:~7,2% set hh=%time:~0,2% set mm=%time:~3,2% set ss=%time:~6,2% ) else ( if "%date:~2,1%"=="." ( set y=%date:~8,2% set m=%date:~3,2% set d=%date:~0,2% set hh=%time:~0,2% set mm=%time:~3,2% set ss=%time:~6,2% ) else ( set y=%date:~11,2% set m=%date:~6,2% set d=%date:~3,2% set hh=%time:~0,2% set mm=%time:~3,2% set ss=%time:~6,2% ) ) set zeit=%hh%:%mm%:%ss% goto:eof
Kommentare
Reg-Key "NoAutoRebootWithLoggedOnUsers"
Nach Abschluss des Scripts bleibt der Reg-Key "NoAutoRebootWithLoggedOnUsers" auf "0", so dass nach Installation der Patches auf jeden Fall ein Reboot erfolgt, auch wenn ein Benutzer angemeldet ist. Ist das so gewollt? Sollte dieser Wert nicht am Schluss wieder auf "1" gesetzt werden, so dass der Benutzer darauf Einfluss hat?
Das ist natürlich richtig. Bei mir folgt danach die automatische Softwareinstallation und ein 2. Patchzyklus, so das ich diesen Wert auf 0 gelassen habe.
Reg-Key "AutoInstallMinorUpdate"
Heisst der Reg-Key nun "AutoInstallMinorUpdate" oder "AutoInstallMinorUpdates", also hängt hinten ein "s" an? Microsoft sagt "AutoInstallMinorUpdates", im Script steht aber "AutoInstallMinorUpdate".
Das ist ein Tippfehler von mir. Danke für den Hinweis. Habe ich im Script gefixt.
sorry
Unter diesem Abschnitt hab ich vergessen dazuzuschreiben Setze Registry für sofortigen Download von Patchen ...
Danke für den Hinweis. Habe ich gefixt ...
Fehler in einer Zeile
Hallo ich habe in dem Skript einen kleinen Fhler entdeckt.
Und zwar diesen hier:
SET KEY=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update
am Ende ist ein Leerzeichen sodass der Registrykey nicht richtig gesetzt wird "Auto Update "