Page 1 of 1

How can i kill all instances of "Wscript.exe" exept one ?

Posted: Fri Nov 08, 2013 4:08 pm
by hackoo
Hi ;)
Please i need some help to solve my issue !
so the question is : How can i kill all instances of "Wscript.exe" exept one that is started by my VBS ?
I made this script , but i get an error at line 19
VBScript Code
Double-click the code block to select all.
Set oWMISrvc = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\.\root\cimv2")

sProcName = Mid(wsh.fullname, InstrRev(wsh.fullname, "\") + 1)

Set cProcesses = oWMISrvc.ExecQuery( _
"select * from win32_process where Name = '" & sProcName & "'")

For Each oProcess in cProcesses
	If Instr(lcase(oProcess.Commandline), lcase(wsh.scriptname)) < 0 Then
		wsh.echo oProcess.Commandline
		wsh.echo wsh.scriptname
	else
		Process2kill = Mid(oProcess.CommandLine,InStr(oProcess.CommandLine,""" """) + 2)
		Process2kill = Replace(Process2kill,chr(34),"")
		msgbox Process2kill 
		Set colItems = GetObject("winmgmts:").ExecQuery("Select * from Win32_Process " _
		& "where commandline like '" & Process2kill &"'",,48)
		For Each objItem in colItems 
			Wscript.Echo "Terminating script with this CommandLine: " & objItem.CommandLine
			objItem.Terminate()
		Next
	End If
Next
msgbox "ok"
Thank you !

Re: How can i kill all instances of "Wscript.exe" exept one

Posted: Fri Nov 08, 2013 5:53 pm
by jvierra
Just takes one simple loop and a filter.
VBScript Code
Double-click the code block to select all.
Set wmi = GetObject("winmgmts:root\cimv2")
Set cProcesses = wmi.ExecQuery("select * from win32_process where Name like '%cscript.exe%' AND NOT commandline like '%" & wsh.scriptname & "%'")

For Each oProcess in cProcesses
    wsh.echo oprocess.commandline
    oProcess.Terminate()
Next
That is all.

Change cscript.exe to wscript.exe if that is what you are usung - you shouldn't be using that.

Re: How can i kill all instances of "Wscript.exe" exept one

Posted: Fri Nov 08, 2013 6:12 pm
by hackoo
Thank you !
Works like a charm :D