无聊看看 發表於 2024-4-14 22:07:54

使用vbs脚本来监控windows服务器上的应用程序(不存在就启动)

<p>这个vbs代码主要实现的功能就是运行该程序,就会在进程中出现一个wscript.exe 它会每隔10s扫面一次进程中是否存在notepad.exe这个程序,不存在就启动。这个启动程序可能跟进程名不一样,好比tomcat应用,启动的是startup.bat,后台进程名为java.exe,这样就需要调整代码proname=&quot;java.exe&quot;</p>
<p>关于如果关掉监控 可以在运行下执行<code>taskkill /f /im wscript.exe</code> 或者在任务管理器 进程中找到wscript.exe 结束进程就可以了</p>
<p>调整WshShell.Run(&quot;startup.bat&quot;)</p>
<p>核心代码</p>
<div class="jb51code"><pre class="brush:vb;">dim wmi,proc,procs,proname,flag,WshShell
Do
proname="notepadjb51.exe" '需要监测的服务进程的名称,自行替换这里的记事本进程名
set wmi=getobject("winmgmts:{impersonationlevel=impersonate}!\.rootcimv2")
set procs=wmi.execquery("select * from win32_process")
flag=true
for each proc in procs
if strcomp(proc.name,proname)=0 then
flag=false
exit for
end if
next
set wmi=nothing
if flag then
Set WshShell = Wscript.CreateObject("Wscript.Shell")
WshShell.Run ("notepadjb51.exe")
end if
wscript.sleep 10000 '检测间隔时</pre></div>
<h3>VBS写个小脚本 实时监测指定程序是否运行 对运行的软件进行操作 最后关闭运行软件</h3>
<div class="jb51code"><pre class="brush:vb;">strComputer = "."
Set objShell = CreateObject("Wscript.Shell")
do
Set wbemServices = Getobject("winmgmts:\\" &amp; strComputer)
Set wbemObjectSet = wbemServices.InstancesOf("Win32_process")
For Each wbemObject In wbemObjectSet
if wbemObject.name="QQ.exe" then
WScript.Sleep 1000
objShell.SendKeys "{F12}"
WScript.Sleep 1000
objShell.SendKeys "{ENTER}"
dim WSHshell
set WSHshell = wscript.createobject("wscript.shell")
WSHshell.run "taskkill /im wscript.exe /f ",0 ,true
end if
Next
loop</pre></div>
<h3>批处理检测进程是否存在;这个我用来检测文化进程是否存在,因为是绿色版的,很容易被关闭,所以需要检测。</h3>
<div class="jb51code"><pre class="brush:ps;">tasklist /nh|find /i "ClientOfWatcher.exe"
if ERRORLEVEL 1 (start C:\watcher\ClientOfWatcher.exe) else (exit)</pre></div>
<h3>VBS定时检测进程是否存在,如果不存在就启动进程。</h3>
<div class="jb51code"><pre class="brush:vb;">option Explicit   
dim wmi,proc,procs,proname,flag,WshShell   
Do
    proname="ClientOfWatcher.exe" '需要监测的服务进程的名称,自行替换这里的记事本进程名   
set wmi=getobject("winmgmts:{impersonationlevel=impersonate}!\\.\root\cimv2")   
set procs=wmi.execquery("select * from win32_process")   
flag=true   
for each proc in procs   
    if strcomp(proc.name,proname)=0 then   
      flag=false   
      exit for   
    end if   
next   
set wmi=nothing   
if flag then   
    Set WshShell = Wscript.CreateObject("Wscript.Shell")   
    WshShell.Run ("C:\Watcher\ClientOfWatcher.exe")   
end if   
wscript.sleep 50000 '检测间隔时间,这里是50秒   
loop</pre></div>
<p>关于vbs系统运行后,系统进程中产生大量wscript.exe</p>
<div class="jb51code"><pre class="brush:ps;">taskkill /IM wscript.exe /F
taskkill /IM cscript.exe /F
taskkill /IM consent.exe /F
taskkill /IM ChsIME.exe /F</pre></div>
<p>所有建议服务器上运行vbs后,如果出现大量wscript.exe进程,可以加上下面的命令</p>
<div class="jb51code"><pre class="brush:ps;">dim WSHshell
set WSHshell = wscript.createobject("wscript.shell")
WSHshell.run "taskkill /im wscript.exe /f ",0 ,true</pre></div>
頁: [1]
查看完整版本: 使用vbs脚本来监控windows服务器上的应用程序(不存在就启动)