Das Problem kennt denke ich jeder. Die Windows Installation ist abgeschlossen aber die Windows Updates lassen sich nicht automatisch direkt im Anschluss installieren. Mit diesem Script wird Windows Update gezwungen eine sofortige Prüfung auf Updates durchzuführen, die Updates herunterzuladen und zu installieren. Außerdem wird vom WSUS abgefragt wie viele Updates für diesen Rechner noch ausstehen. Da Windows zwischen den Updates Reboots benötigt wird dieser Status an WINST übergeben und der Rechner solange neu gestartet bis der Wert auf 0 Updates steht !
Da der Status vom WSUS abgefragt wird, wird ein WSUS benötigt (nur für die Statusabfrage!)
Das Script befindet sich noch in der Testphase und funktioniert noch nicht wirklich - über weitere Ideen und Verbesserungsvorschläge wäre ich sehr erfreut !
Mir fehlt die Möglichkeit abzufragen ob die Updates installiert wurden und der Rechner neugestartet werden muss ! Eventuell hat da ja jemand eine Idee WINST Script
[INITIAL] DefStringList $counterString$ DefVar $CounterVar$ DefVar $TRIM$ [ACTIONS] ShellInAnIcon_Forceupdates ShellInAnIcon_Check set $counterString$ = getOutStreamFromSection('ShellInAnIcon_check') set $CounterVar$ = takeString(0,$CounterString$) set $trim$ = trim($CounterVar$) if $trim$ = "0" comment "Keine Updates mehr Verfügbar" else ExitWindows /ImmediateReboot comment weitere Updates verfügbar reboot wurde initialisiert ! endif [shellInAnIcon_Check] @echo off Powershell %scriptpath%\check.ps1 @echo on [ShellInAnIcon_Forceupdates] regedit /s %scriptpath%\WSUS.reg net stop wuauserv REG DELETE "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v LastWaitTimeout /f REG DELETE "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v DetectionStartTime /f Reg Delete "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v NextDetectionTime /f REG Delete "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v ScheduledInstallDate /f REG Add "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v ScheduledInstallDate /f /d "2010-01-01 06:00:00" net start wuauserv wuauclt /detectnow wuauclt /updatenow
check.ps1
$Session= New-Object -ComObject Microsoft.Update.Session $Searcher = $Session.CreateUpdateSearcher() $list = $Searcher.Search('IsInstalled = 0 and IsHidden = 0') write-host $list.updates.count
TODO: