Find & killtask function

Tested with opsi 4.11.2.9
requiredWinstVersion >= 4.11.2.1
By — tobias 2012/10/01 20:07

With this script you can find one or more running programs and kill them automatically.

You must only define the programs (look at your Task Manager)

Dieses Script ist als Funktion für andere Scripte gedacht. Es sucht vorher definierte Programme und schließt sie (abschaltbar) automatisch mit killtask. Da ich kein Programmierer bin lässt sich das ganze sicherlich eleganter lösen - es erfüllt jedoch seinen Zweck.

Warum dieses Script und nicht die WINST Funktion Killtask? Ganz einfach: Die Winst Funktion kann nur Prozesse beenden - nicht jedoch prüfen ob der Prozess auch wirklich läuft. Ich kann also nicht anders drauf reagieren. Ich nutze es z.B. um zu prüfen ob Office Anwendungen laufen - ich beende diese jedoch nicht, sondern breche die Installation ab. Bei UIB habe ich dafür noch ein Ticket offen, damit es möglich ist das laufende Script einfach zu beenden, aber auf Setup zu belassen, also quasi zu überspringen.

[Actions]
setloglevel = 6
requiredWinstVersion >= "4.11.2.9"
 
DefVar $process2$
DefVar $subvar$
DefVar $killtask$
 
DefStringList $processlist$
DefStringList $process$
DefStringList $SearchProcess$
 
;----------Definiere hier welche Programme gesucht und geschlossen werden sollen--------------------------------
set $searchProcess$ = createStringList ('OUTLOOK.EXE','WINWORD.EXE','POWERPNT.EXE')
;sollen die Programme automatisch geschlossen werden? ACHTUNG: Datenverlust möglich!
set $killtask$ = "true"
;----------------------------------------------------------------------------------------------------------------
 
for %s% in $SearchProcess$ do sub_checkfunktion
 
[sub_checkfunktion]
set $subvar$ = "%s%"
set $processlist$ = getOutStreamFromSection('DosInAnIcon_checkprocess')
set $process$ = splitString(takeString(1,$processlist$), ",")
set $process2$ = unquote(takeString(1,$processlist$), '"')
 
if ($process2$ = $subvar$)
Message = "Prozess gefunden"
	if ($killtask$ = "true")
		killtask $subvar$
	else
		message "killtask is set false"
	endif
else
message = "Prozess nicht gefunden"
endif
 
 
 
[DosInAnIcon_checkprocess]
@echo off
TASKLIST /FI "IMAGENAME eq $subvar$" /fo CSV