Lokale Variablen mit mehrfachem Aufruf
Verfasst: 22 Nov 2017, 09:36
Hallo zusammen,
im Zusammenhang mit der neuen Funktionen mit lokalen Variablen bin ich gestern auf ein Problem gestoßen.
Ein mehrfaches Aufrufen der Funktionen ist nicht möglich, wenn innerhalb der Funktion Variablen definiert (DefVar) werden.
Ein zweiter Aufruf ist dann nicht mehr möglich, da die Variablennamen dann doppelt sind.
Beispiel des Hauptscripts
Beispiel der aufgerufenen Funktion
Selbstverständlich kann ich das Problem "umgehen", indem ich die Variable $exitcode$ im Hauptscript definiere und nicht in der Funktion. Aber es wäre viel schöner, wenn o.g. Beispiel funktionieren würde
Versionen:
opsi Server = 4.0.7.45
opsi-client-agent = 4.0.7.23-4
opsi-winst = 4.12.0.7-1
Viele Grüße
Leonardo
im Zusammenhang mit der neuen Funktionen mit lokalen Variablen bin ich gestern auf ein Problem gestoßen.
Ein mehrfaches Aufrufen der Funktionen ist nicht möglich, wenn innerhalb der Funktion Variablen definiert (DefVar) werden.
Ein zweiter Aufruf ist dann nicht mehr möglich, da die Variablennamen dann doppelt sind.
Beispiel des Hauptscripts
Code: Alles auswählen
encoding=UTF-8
[Actions]
AutoActivityDisplay = true
DefVar $act_reboot_counter$
DefVar $max_reboot_counter$
DefVar $exit1$
DefVar $exit2$
Set $act_reboot_counter$ = "0"
Set $max_reboot_counter$ = GetProductProperty("max_reboot_counter", "15")
; --- Workflow ---
; Import Libraries
importLib "function-global.opsiscript"
; Prüfe Exitcode
set $exit1$ = function-exitcode_check($act_reboot_counter$,$max_reboot_counter$)
...
set $exit2$ = function-exitcode_check($act_reboot_counter$,$max_reboot_counter$)
Code: Alles auswählen
DefFunc function-exitcode_check(ref $act_reboot_counter$ : string, $max_reboot_counter$ : string) : string
DefVar $exitcode$
set $exitcode$ = "0"
Message "Teste Erfolg der Installation via exitcode ..."
; --- Workflow ---
set $exitcode$ = getLastExitCode
; informations to exit codes see
; http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx
; http://msdn.microsoft.com/en-us/library/aa368542.aspx
Switch $exitcode$
...
endfunc
Versionen:
opsi Server = 4.0.7.45
opsi-client-agent = 4.0.7.23-4
opsi-winst = 4.12.0.7-1
Viele Grüße
Leonardo