PC wird endlos neugestartet

Antworten
Abdurrhman
Beiträge: 1
Registriert: 21 Mär 2020, 23:36

PC wird endlos neugestartet

Beitrag von Abdurrhman »

‏Hallo alle,
 
‏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
; ----------------------------------------------------------------

andré
Beiträge: 324
Registriert: 07 Jan 2014, 10:48

Re: PC wird endlos neugestartet

Beitrag von andré »

Da habe ich unlängst mal einen anderen Nutzer auf die Lösung gestoßen, du speicherst den aktuellen Stand nicht, sondern das Skript beginnt jedes Mal von vorn. Schau mal hier für allgemeine Infos zum Reboot-Verhalten:
viewtopic.php?f=7&t=12361

Und was der Abbruch angeht, das kannst du zum Beispiel machen, indem du einen separaten Wert speicherst, der die Anzahl der Starts beinhaltet.
Den zählst du nach dem Schema

Code: Alles auswählen

Set $Start_Flag$ = calculate($Start_Flag$ + "+1")
immer um 1 hoch. Wenn der Wert irgendwann 5 beträgt, brichst du ab.
Antworten