Seite 1 von 1

Opsi Update Script mit ExitWindows /ImmediateReboot

Verfasst: 27 Feb 2017, 17:08
von Simon09
Hallo Forum,

ich habe ein Update Script nach Vorlage der Opsi Anleitung gebaut, Script aus der Anleitung:

Code: Alles auswählen

DefVar $Flag$
DefVar $WinstRegKey$
DefVar $RebootRegVar$
Set $WinstRegKey$ = "HKLM\SOFTWARE\opsi.org\winst"
Set $Flag$ = GetRegistryStringValue32("["+$WinstRegKey$+"] "+"RebootFlag")
if not ($Flag$ = "1")
;=========================
; Anweisungen vor Reboot
Files_doSomething
; Reboot initialisieren ...
Set $Flag$ = "1"
Registry_SaveRebootFlag
ExitWindows /ImmediateReboot
else
;=========================
; Anweisungen nach Reboot
; Rebootflag zurücksetzen
Set $Flag$ = "0"
Registry_SaveRebootFlag
; die eigentlichen Anweisungen
Files_doMore
endif
[Registry_SaveRebootFlag]
openKey [$WinstRegKey$]
set "RebootFlag" = "$Flag$"
[Files_doSomething]
; eine Sektion, die vor dem Reboot ausgeführt wird
[Files_doMore]
; eine Sektion, die nach dem Reboot ausgeführt wird
Wenn ich auf Basis von diesem Code das Script ausfühe, passiert nichts... Wenn ich das ganze mit winst32.exe öffne sehe ich, dass er im Prinzip nur:

Code: Alles auswählen

[6] [Feb 27 17:06:49:322] Registry key [HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion]  opened
[6] [Feb 27 17:06:49:324] Key closed
durchführt, sonst nichts. Wo liegt der Fehler? Bis auf jeweils eine Copy anweisung in der Files Sektion und umbenennung der File Sektionen ist alles gleich.

Danke!

Re: Opsi Update Script mit ExitWindows /ImmediateReboot

Verfasst: 27 Feb 2017, 17:40
von uncle_scrooge
Nach was hast Du die Files-Sektionen umbenannt?
Sie sollten nach wie vor mit Files_ anfangen.

Re: Opsi Update Script mit ExitWindows /ImmediateReboot

Verfasst: 27 Feb 2017, 21:47
von Simon09
Einfach nur in Files_1 und Files_2 ...

Ich bin morgen früh wieder im Büro dann schaue ich nochmal drüber, aber ich habe heute keinen Fehler in dem Script finden können was die File Sektion Aufrufe angeht. Er öffnet mir nur einmal den Key und schließt ihn dann...

Re: Opsi Update Script mit ExitWindows /ImmediateReboot

Verfasst: 28 Feb 2017, 12:14
von Simon09
Hier exakt mein Script, wie gesagt im Prinzip genauso wie in der Opsi Winst / Script Anleitung:

Code: Alles auswählen

DefVar $Flag$
DefVar $WinstRegKey$
DefVar $RebootRegVar$

Set $WinstRegKey$ = "HKLM\SOFTWARE\opsi.org\winst"
Set $Flag$ = GetRegistryStringValue32("["+$WinstRegKey$+"] "+"RebootFlag")


if not ($Flag$ = "1")
;=========================
; Vor Reboot

Files_1
Set $Flag$ = "1"
Registry_SaveRebootFlag
ExitWindows /ImmediateReboot

else
;=========================
; Nach Reboot

; Rebootflag zurücksetzen
Set $Flag$ = "0"
Registry_SaveRebootFlag

/WaitForProcessEnding "DvInesInstMan.Exe" /TimeOutSeconds 600
killtask "test.exe"
Files_2

endif

[Registry_SaveRebootFlag]
openKey [$WinstRegKey$]
set "RebootFlag" = "$Flag$"

[Files_1]
copy -u "%SCRIPTPATH%\test.exe" "%SYSTEMDRIVE%\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"

[Files_2]
delete -f "%SYSTEMDRIVE%\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\test.exe"
Laut winst32.exe passiert nichts weiteres als:

[6] [Feb 28 12:14:31:303] Registry key [HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion] opened
[6] [Feb 28 12:14:31:305] Key closed
[1] [Feb 28 12:14:31:392] ___________________
[1] [Feb 28 12:14:31:394] script finished
[1] [Feb 28 12:14:31:396] 0 errors
[1] [Feb 28 12:14:31:398] 0 warnings

edit: Was halt komisch ist; er geht weder in die if noch in die else Sektion rein... Aber da das jetzt mein erstes Script seit ca einem Jahr ist, kann es auch gut sein dass ich da etwas grundsätzliches verbocke. Wenn ich das Script jedenfalls on demand ausführe lädt der Opsi Client, und ist dann quasi nach 10 Sekunden mit "nichts" fertig :P

edit2: godness, ich glaube ich habe einfach nur die [Actions] Zeile oben vergessen... :roll:

Re: Opsi Update Script mit ExitWindows /ImmediateReboot

Verfasst: 28 Feb 2017, 12:53
von uncle_scrooge
Ganz am Anfang des scripts wäre noch ein [Actions] angeraten.

Re: Opsi Update Script mit ExitWindows /ImmediateReboot

Verfasst: 28 Feb 2017, 14:51
von holgerv
"WaitForProcessEnding" sollte Teil einer WinBatch-Sektion sein.
Die ungefähre Syntax ist so:

Code: Alles auswählen

[Actions]
Winbatch_beispiel /WaitForProcessEnding "programm.exe"

[Winbatch_beispiel]
"%ScriptPath%\programm.exe"
Viel Erfolg!

Re: Opsi Update Script mit ExitWindows /ImmediateReboot

Verfasst: 28 Feb 2017, 15:29
von Simon09
Danke, ich hatte dazu ja parallel schon eine Frage in einem anderen Thread gestellt. Mein Problem ist dass es sich um eine exe handelt die extern gestartet ist und ich nicht per Winbatch abhandeln kann. Wie kann ich WaitForProcessEnding darauf anwenden?

Re: Opsi Update Script mit ExitWindows /ImmediateReboot

Verfasst: 02 Mär 2017, 13:40
von holgerv
Simon09 hat geschrieben:Danke, ich hatte dazu ja parallel schon eine Frage in einem anderen Thread gestellt.
Das ist nicht hilfreich.
Simon09 hat geschrieben:Mein Problem ist dass es sich um eine exe handelt die extern gestartet ist und ich nicht per Winbatch abhandeln kann. Wie kann ich WaitForProcessEnding darauf anwenden?
Guck Dir mal "GetProcessList" an. Beispielcode findest Du z. B. in https://download.uib.de/opsi4.0/product ... 6.4-1.opsi. (Da ist Beispielcode für so ziemlich alles drin.)

Viel Erfolg!


Holger