ich möchte Windows 10 Updates mit einer Software(APC-Updater) mit OPSI installieren, der PC muss mehrmals neugestartet werden, da ein paar Updates einen Neustart anfordern, deshalb verwende ich eine FOR-TO Schleife, damit die Software(ABC-Updater) bei jedem Mal die Updates sucht und installiert und dann muss dieser Prozess wiederholt werden bis zum Ende der Schleife.
Das Problem: Der PC wird endlos neugestartet und das Skript auch, außerdem wird das Skript nach jedem Neustart ab der ersten Zeile ausgeführt und nicht ab der letzten Stelle vor dem Neustart, wie kann ich den PC nur bis zum Ende der Schleife (5 mal) neustarten lassen?
Danke für die Hilfe im Voraus.
Mein Code:
Code: Alles auswählen
----------------------------------------------------------------
; Copyright (c) uib gmbh (www.uib.de)
; This sourcecode is owned by uib
; and published under the Terms of the General Public License.
; ----------------------------------------------------------------
[Initial]
SetLogLevel=7
ExitOnError=false
ScriptErrorMessages=false
TraceMode=off
; ----------------------------------------------------------------
[Actions]
requiredWinstVersion >= "4.12.0.28"
; ----------------------------------------------------------------
DefVar $ProductId$
DefVar $ProductName$
DefVar $InstallDir$
DefVar $MinimumSpace$
DefVar $ExitCode$
DefVar $ErrorString$
DefVar $LogDir$
DefVar $OS$
DefVar $Maxreboots$
DefVar $Flag$
DefVar $WinstRegKey$
; ----------------------------------------------------------------
; import complete file !
importlib "uib_exitcode.opsiscript"
importlib "%scriptpath%\osd-lib.opsiscript"
; ----------------------------------------------------------------
Set $ProductId$ = "abc-updater"
Set $ProductName$ = "ABC-Updater"
Set $WinstRegKey$ = "HKLM\SOFTWARE\opsi.org\winst"
Set $Flag$ = GetRegistryStringValue32("["+$WinstRegKey$+"] "+"RebootFlag")
Set $MinimumSpace$ = "20 MB"
set $OS$ = GetOS
Set $LogDir$ = "%opsiLogDir%"
; ----------------------------------------------------------------
if not(($OS$ = "Windows_NT"))
logError "Installation aborted: wrong OS version: only Windows"
isFatalError "wrong OS"
endif
; ----------------------------------------------------------------
if not(HasMinimumSpace ("%SystemDrive%", $MinimumSpace$))
LogError "Not enough space on %SystemDrive%, " + $MinimumSpace$ + " on drive %SystemDrive% needed for " + $ProductId$
isFatalError "No Space"
; Stop process and set installation status to failed
endif
for %s% = "1" to "5" do sub_reboot
sub_check_exitcode
; ----------------------------------------------------------------
[sub_check_exitcode]
set $ExitCode$ = getlastexitcode
if stringtobool(isMsExitcodeFatal_short($exitcode$, "true", $ErrorString$ ))
LogError $ErrorString$
isfatalerror $ErrorString$
else
Comment $ErrorString$
endif
; ----------------------------------------------------------------
[Registry_SaveRebootFlag]
openKey [$WinstRegKey$]
set "RebootFlag" = "$Flag$"
; ----------------------------------------------------------------
[DosInAnIcon_ABC_Updater]
"%ProgramFiles32Dir%\ABC-Update\ABC-Update.exe" /S:WSUS /A:Install /R:N
; ----------------------------------------------------------------
[sub_reboot]
if not ($Flag$ = "1")
;=========================
; Anweisungen vor Reboot
comment "Suchen und Installieren der Windows Updates durch ABC-Updates vor dem Reboot"
DosInAnIcon_ABC_Updater
; Reboot initialisieren ...
Set $Flag$ = "1"
Registry_SaveRebootFlag
ExitWindows /ImmediateReboot
else
;=========================
; Anweisungen nach Reboot
; Rebootflag zurücksetzen
Set $Flag$ = "0"
Registry_SaveRebootFlag
; die eigentlichen Anweisungen
comment "Suchen und Installieren der Windows Updates durch ABC-Updates nach dem Reboot"
DosInAnIcon_ABC_Updater
endif
; ----------------------------------------------------------------