Войти

Показать полную графическую версию : VBS мониторинга процесса по времени


san1kan
29-01-2017, 14:45
Доброго времени суток! Есть скрипт
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")

Set colProcesses = objWMIService.ExecQuery( _
"Select Name From Win32_Process " _
& "Where Name = 'proc1.exe'")

If colProcesses.Count = 0 Then
Set objShell = Wscript.CreateObject("Wscript.Shell")
objShell.Run "proc2.exe"
End If

proc2 по факту батник для запуска proc1 с ключами.
Данный скрипт необходимо поставить в цикл, на проверку например каждые 5 минут наличия Proc1 и соответственно запуска proc2 при его отсутствии.

Petya V4sechkin
29-01-2017, 15:59
на проверку например каждые 5 минут
Обычно это делается с помощью "Планировщика заданий".

san1kan
29-01-2017, 16:04
Обычно это делается с помощью "Планировщика заданий". »
Планировщик конечно вариант, но хотелось бы через скрипт. Примерно как в этом. Только тут на 1 процесс сделано.
Option Explicit

Dim lngProcessID

With WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2")
Do
If .Get("Win32_Process").Create( _
"""C:\Program Files\Internet Explorer\iexplore.exe"" -k ""file://C:\WINDOWS\Help\Tours\htmlTour\default.htm""", _
Null, Null, lngProcessID) = 0 Then

.ExecNotificationQuery( _
"SELECT * FROM __InstanceDeletionEvent WITHIN 1 WHERE " & _
"TargetInstance ISA 'Win32_Process' AND " & _
"TargetInstance.ProcessID = '" & CStr(lngProcessID) & "'").NextEvent
Else
' Не удалось запустить процесс
Exit Do
End If
Loop
End With

WScript.Quit 0




© OSzone.net 2001-2012