远程杀死一个进程

时间:2015-10-06 15:29:56

标签: vbscript

我有这个代码来远程杀死5台服务器上的某个进程。我的问题是我想缩短它并在一次点击中杀死所有服务器中的进程。代码现在询问我是否确定要杀死进程,然后杀死进程,然后询问我是否要继续下一个服务器。我想只是有一个混乱说“在所有服务器上杀死进程”并完成

`Option Explicit
Dim objWMIService, objProcess, colProcess
Dim strProcessKill, item
Dim strComputer(4)
Dim ans, killFLag

strComputer(0) = "server1"
strComputer(1) = "server2"
strComputer(2) = "server3"
strComputer(3) = "server4"
strComputer(4) = "server5"

    strProcessKill = "'notepad.exe'" 



For item = 0 To 4 Step 1

if MsgBox("Are you sure you want to kill " & strProcessKill & " on " & strCOmputer(item) & "?" , vbYesNo + vbQuestion) = vbYes then
    killFLag = 1
end if


if KillFlag = 1 then
    msgbox "KILLING PROCESS ON" & strComputer(item)
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer(item) & "\root\cimv2") 

    Set colProcess = objWMIService.ExecQuery _
    ("Select * from Win32_Process Where Name = " & strProcessKill)
        For Each objProcess in colProcess
            objProcess.Terminate()
        Next 
    WSCript.Echo "Just killed process " & strProcessKill & " on " & strComputer(item)   

else

WScript.Quit 

end if

Next`

1 个答案:

答案 0 :(得分:0)

向下移动for循环,以便不会提示您输入每个服务器。这样的事情应该有效

Option Explicit
Dim objWMIService, objProcess, colProcess
Dim strProcessKill, item
Dim strComputer(4)
Dim ans, killFLag

strComputer(0) = "server1"
strComputer(1) = "server2"
strComputer(2) = "server3"
strComputer(3) = "server4"
strComputer(4) = "server5"


    strProcessKill = "'notepad.exe'" 

if MsgBox("Are you sure you want to kill " & strProcessKill & " on all servers?" , vbYesNo + vbQuestion) = vbYes then
    killFLag = 1
end if


if KillFlag = 1 then
    msgbox "KILLING PROCESS ON ALL SERVERS" 
    For item = 0 To 4 Step 1
        Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer(item) & "\root\cimv2") 

        Set colProcess = objWMIService.ExecQuery _
        ("Select * from Win32_Process Where Name = " & strProcessKill)
            For Each objProcess in colProcess
                objProcess.Terminate()
            Next 

    next
    msgBox "Done"
else

WScript.Quit 

end if