User Tools

Site Tools


userspace:windows_updates

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
userspace:windows_updates [2012/10/04 12:37]
Thomas_H
userspace:windows_updates [2021/08/23 08:37] (current)
Line 13: Line 13:
  
 ==== always.ins ==== ==== always.ins ====
-<code winst>+ 
 +<code winst always.ins>
 [Initial] [Initial]
 setLogLevel=9 setLogLevel=9
Line 207: Line 208:
  
 Verbesserungsvorschläge und Optimierungen sind jederzeit willkommen. Verbesserungsvorschläge und Optimierungen sind jederzeit willkommen.
 +
 +
 +====== Windows Updates (Alternative) ======
 +This Script is maintained by:  --- //[[tobias.friede@wki.fraunhofer.de|tobias]] 2013/03/01 18:06//
 +
 +This is an alternative way to install all Windows & Office Updates on the fly after Windows installation.
 +The script is based on WUInstall Pro ([[http://wuinstall.com/]]) - but i think it will work with the free version too (maybe with small changes)
 +It's Important that you have a WSUS Server in your Network because the checkroutine uses an WSUS to check for outstanding updates. 
 +
 +**Update: The option /use_wsus is only available in WuInstallPRO!**
 +
 +The option /use_wsus is only needed by users who do not have a ActiveDirectory with an active WSUS Group policy. If you do not have an ActiveDirectory you can set the option via registry.
 +
 +----
 +Ich habe eine weitere Variante entwickelt um Updates automatisiert nach der OS Installation auf den Client zu bringen.
 +Mein Script basiert auf dem Programm WUInstall ([[http://wuinstall.com/]]) getestet und entwickelt habe ich das Script mit der Pro Version - ich denke es wird auch mit der Free Version funktionieren.
 +
 +Das Script startet WUInstall welches ALLE Updates vom WSUS installiert alternativ auch aus dem Internet.
 +Anschließend überprüft das Script ob weitere Updates ausstehen und startet den Rechner bei Bedarf neu um anschließend erneut Updates nach Updates zu suchen.
 +
 +Das Script ist getestet auf Windows 7 x64 und x86 sollte aber auch auf Windows XP funktionieren wenn dort die Powershell installiert ist! 
 +
 +=== Folgendes muss beachtet werden: ===
 +- Wenn Optionale Updates angeboten werden, werden diese nicht automatisch installiert und das Powershellscript wird nie 0 zurückgeben!
 +
 +- Das Script hat eine Geringe Priorität, daher wird es nahezu als letztes ausgeführt. Das ist wichtig damit alle Produkte die darüber mit Updates versorgt werden, diese auch enthalten. 
 +
 +==== Setup.ins ====
 +<code winst>
 +[ACTIONS]
 +
 +; -------- Define Variables -------------------------
 +DefVar $WinstRegKey$
 +DefVar $RebootRegVar$
 +DefStringList $counterString$
 +DefVar $CounterVar$
 +DefVar $trim$
 +DefVar $INST_SystemType$ 
 +Defvar $outstanding$
 +DefVar $ProductId$
 +DefVar $RebootCounter$
 +DefVar $NumberOfNeededReboots$
 +
 +Set $WinstRegKey$ = "HKLM\SOFTWARE\opsi.org\winst"
 +Set $ProductID$ = "Windows Updates"
 +Set $INST_SystemType$ = GetSystemType
 +Set $NumberOfNeededReboots$ = GetProductProperty("NumberOfNeededReboots", "15")
 +
 +ShowBitmap "%ScriptPath%\WU.png" $ProductId$
 +
 +
 +; ------------- Create Reboot flag registry key ----------------------------------------------
 +
 +if  (GetRegistryStringValue32("["+$WinstRegKey$+"] "+"RebootFlag") = "")
 + set $RebootCounter$ = "0"
 +else
 + Set $RebootCounter$ = GetRegistryStringValue32("["+$WinstRegKey$+"] "+"RebootFlag")
 +endif
 +
 +;-------------------------- Patch Routine ----------------------------------------------------
 +
 +comment $RebootCounter$
 +comment $NumberOfNeededReboots$
 +if ($RebootCounter$ INT<= $NumberOfNeededReboots$)
 +
 + if ($INST_SystemType$ = "64 Bit System")
 + DOSBatch_install_updates_x64
 + else
 + DOSBatch_install_updates_x86
 + endif
 +
 +;---------------------------- Check pending updates ---------------------------------------
 + winbatch_psactivate
 + set $counterString$ = getOutStreamFromSection('execWith_powershell "Powershell"')
 + set $CounterVar$ = takeString(0,$CounterString$)
 + set $trim$ = trim($CounterVar$)
 + set $outstanding$ = $trim$ 
 + opsiServiceCall_report_pending_updates
 +  
 + if $trim$ =  "0"
 + comment "Keine Updates Verfuegbar"
 + set $RebootCounter$ = calculate($NumberOfNeededReboots$+"+1"
 + Registry_SaveRebootCounter
 + ExitWindows /Reboot
 + else
 +        set $RebootCounter$ = calculate($RebootCounter$+"+1")
 + opsiServiceCall_report_reboot
 + Registry_SaveRebootCounter
 + ExitWindows /ImmediateReboot
 + comment "weitere Updates verfuegbar reboot wurde initialisiert und Zaehler um 1 erhoeht"
 + endif
 +
 +else
 + set $RebootCounter$ = "0"
 + Registry_SaveRebootCounter
 + Comment "Maximale Anzahl durchlaeufe erreicht, RebootCounter (Rebootflag) zurueckgesetzt auf 0"
 +endif
 +
 +
 +
 +
 +; ----------- Sections -------------------------------------------------------------------------------------
 +
 +[DOSBatch_install_updates_x64]
 +%scriptpath%/WUInstallX64.exe /install /use_wsus http://xxxx.15 /logfile_append c:/tmp/wuinstall.log 
 +
 +[DOSBatch_install_updates_x86]
 +%scriptpath%/WUInstallX86.exe /install /use_wsus http://xxxx.15 /logfile_append c:/tmp/wuinstall.log 
 +
 +[winbatch_psactivate]
 +powershell Set-ExecutionPolicy RemoteSigned
 +
 +[execWith_powershell]
 +$Session= New-Object -ComObject Microsoft.Update.Session
 +$Searcher = $Session.CreateUpdateSearcher()
 +$list = $Searcher.Search('IsInstalled = 0 and IsHidden = 0')
 +write-host $list.updates.count
 +
 +[Registry_SaveRebootCounter]
 +openKey [$WinstRegKey$]
 +set "RebootFlag" = "$RebootCounter$"
 +
 +[opsiServiceCall_report_pending_updates]
 +"method": "setProductProperty"
 +"params": [
 +"windowsupdates",
 +"ausstehend",
 +"$outstanding$",
 +"%hostid%"
 +]
 +
 +[opsiServiceCall_report_reboot]
 +"method": "setProductProperty"
 +"params": [
 +"windowsupdates",
 +"rebootcounter",
 +"$RebootCounter$",
 +"%hostid%"
 +]
 +</code>
 +===control===
 +<code winst>
 +[Package]
 +version: 1
 +depends: 
 +incremental: False
 +
 +[Product]
 +type: localboot
 +id: windowsupdates
 +name: Windows Updates
 +description: Installiert Windowsupdates
 +advice: 
 +version: 1.5
 +priority: -89
 +licenseRequired: False
 +productClasses: 
 +setupScript: setup.ins
 +uninstallScript: 
 +updateScript: 
 +alwaysScript: 
 +onceScript: 
 +customScript: 
 +userLoginScript: 
 +
 +[ProductProperty]
 +type: unicode
 +name: ausstehend
 +multivalue: False
 +editable: True
 +description: Noch ausstehende Updates (nicht editieren)
 +values: ["0"]
 +default: ["0"]
 +
 +[ProductProperty]
 +type: unicode
 +name: rebootcounter
 +multivalue: False
 +editable: True
 +description: Anzahl bisheriger Neustarts (nicht editieren)
 +values: ["0"]
 +default: ["0"]
 +
 +[ProductProperty]
 +type: unicode
 +name: numberofneededreboots
 +multivalue: False
 +editable: True
 +description: Startet Rechner bei bedarf auf mehrmals neu
 +values: ["0", "10", "11", "12", "13", "14", "15", "3", "4", "5", "6", "7", "8", "9"]
 +default: ["15"]
 +
 +
 +</code>
 +
 +==== Neuerungen / News: ====
 + --- //[[tobias.friede@wki.fraunhofer.de|tobias]] 2013/08/15 21:00//
 +
 +- Report pending Updates to Configed (realised with Produtctproperty)
 +
 +- Reboot counter (reported to Configed)
 +
 +- Maximum Reboots (Property) (Prevents continuous loop) 
userspace/windows_updates.1349354223.txt.gz · Last modified: 2021/08/23 08:37 (external edit)